Rumah >rangka kerja php >ThinkPHP >Bagaimana untuk menggunakan pengesahan kebenaran dalam thinkphp
Dengan pembangunan Internet yang berterusan, bilangan pengguna laman web semakin meningkat Untuk mengurus dan memastikan keselamatan data pengguna dengan lebih baik, pengesahan kuasa telah menjadi salah satu fungsi penting setiap laman web. Antara rangka kerja PHP, ThinkPHP ialah rangka kerja yang sangat popular dan juga menyediakan fungsi pengesahan autoriti yang lengkap. Jadi, artikel ini akan memperkenalkan secara terperinci cara ThinkPHP menggunakan pengesahan kebenaran.
1 Peranan pengesahan kebenaran
Pengesahan kebenaran adalah terutamanya untuk mengawal kebenaran pengguna dalam peranan yang berbeza untuk memastikan pengguna hanya boleh mengakses sumber yang mereka mempunyai kebenaran untuk mengakses dan tidak boleh menggunakannya di luar kuasa mereka. Sebagai contoh, dalam laman web e-dagang, pentadbir boleh melihat dan mengurus semua maklumat produk, manakala pengguna biasa hanya boleh menyemak imbas maklumat produk dan tidak boleh mengubah suai atau memadamkannya.
2. Kaedah pelaksanaan pengesahan autoriti
Rangka kerja ThinkPHP menyediakan dua kaedah pelaksanaan pengesahan autoriti: RBAC dan pengesahan autoriti berasaskan nod. RBAC (Kawalan Akses Berasaskan Peranan), iaitu kawalan akses berasaskan peranan, mengklasifikasikan pengguna yang berbeza mengikut peranan mereka. Pengesahan kuasa berasaskan nod mengawal kuasa melalui nod, yang boleh menjadi pengawal, kaedah pengendalian, dsb.
Untuk melaksanakan pengesahan kebenaran melalui RBAC dalam rangka kerja, anda perlu menggunakan kelas Auth, yang terletak di ThinkPHPLibraryThink. Langkah-langkah khusus adalah seperti berikut:
(1) Buat jadual nod dan jadual peranan, dan kaitkan nod kebenaran dengan peranan. Mencipta jadual nod boleh sepadan dengan pengawal dan kaedah operasi Jadual peranan menyimpan nama peranan dan ID nod yang sepadan, seperti yang ditunjukkan di bawah:
Jadual nod (think_node):
id | name | module | controller | action | pid |
---|---|---|---|---|---|
1 | index | home | index | index | 0 |
2 | add | home | index | add | 1 |
3 | edit | home | index | edit | 1 |
4 | delete | home | index | delete | 1 |
Jadual peranan (think_role):
id | name | node_ids |
---|---|---|
1 | admin | 1,2,3,4 |
2 | user | 1 |
(2) Gunakan kelas Auth dalam pengawal untuk pengesahan kebenaran Kod khusus adalah seperti berikut:
class IndexController extends Controller
{.
public function __construct() { parent::__construct(); //实例化Auth类 $auth = new ThinkAuth(); //获取当前用户的角色ID $uid = session('user_id'); //获取当前请求的控制器和方法 $url = MODULE_NAME . '/' . CONTROLLER_NAME . '/' . ACTION_NAME; //进行权限认证 if (!$auth->check($url, $uid)) { $this->error('您没有访问该页面的权限!'); } }
}
Dalam kod di atas, dengan membuat seketika kelas Auth, ID peranan pengguna semasa dan pengawal serta kaedah yang diminta diperoleh, dan kemudian kaedah $auth->check() digunakan untuk pengesahan kebenaran. Jika pengesahan gagal, mesej ralat akan dikeluarkan.
Pengesahan kebenaran berasaskan nod boleh dilaksanakan menggunakan kelas Access yang disediakan oleh rangka kerja, yang juga terdapat dalam ThinkPHPLibraryThink. Langkah khusus adalah seperti berikut:
(1) Gunakan kelas Access dalam pengawal untuk pengesahan kebenaran Kod khusus adalah seperti berikut:
class IndexController extends Controller
{
public function __construct() { parent::__construct(); //实例化Access类 $access = new ThinkAccess(); //获取当前用户的角色ID $uid = session('user_id'); //获取当前请求的控制器和方法 $url = MODULE_NAME . '/' . CONTROLLER_NAME . '/' . ACTION_NAME; //定义权限节点列表 $nodes = array( 'Index/index',//首页 'Index/add',//添加页面 'Index/edit',//编辑页面 'Index/delete',//删除操作 ); //进行权限认证 if (!$access->check($nodes, $uid, $url)) { $this->error('您没有访问该页面的权限!'); } }}Dalam kod di atas, dengan menghidupkan kelas Access, ID peranan pengguna semasa dan pengawal serta kaedah yang diminta diperoleh, dan kemudian kaedah $access->check() digunakan untuk pengesahan kebenaran. Setiap item dalam senarai nod kebenaran sepadan dengan nod, iaitu pengawal dan kaedah. Jika pengesahan gagal, mesej ralat akan dikeluarkan. 3. Pengoptimuman pengesahan kebenaran Dalam aplikasi praktikal, kami juga perlu membuat beberapa pengoptimuman kepada pengesahan kebenaran untuk meningkatkan kebolehgunaan semula dan keselamatan. Titik pengoptimuman khusus adalah seperti berikut:
Atas ialah kandungan terperinci Bagaimana untuk menggunakan pengesahan kebenaran dalam thinkphp. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!