Rumah > Artikel > pembangunan bahagian belakang > Perisian tengah rangka kerja Yii: menggunakan pengurusan pengesahan dan kebenaran untuk melaksanakan kawalan kebenaran peranan
Perisian tengah rangka kerja Yii: Gunakan pengurusan pengesahan dan kebenaran untuk melaksanakan kawalan kebenaran peranan
Dalam pembangunan aplikasi peringkat perusahaan, kawalan kebenaran adalah bahagian yang penting. Menggunakan rangka kerja Yii, kami boleh melaksanakan kawalan kebenaran peranan dengan mudah melalui perisian tengah untuk melindungi aplikasi kami daripada capaian yang tidak dibenarkan.
Rangka kerja Yii menyediakan sistem pengurusan pengesahan dan kebenaran lengkap yang boleh membantu kami melaksanakan pengesahan pengguna dan kawalan kebenaran peranan. Di bawah saya akan memperkenalkan cara menggunakan perisian tengah dan menggabungkan fungsi ini untuk melaksanakan kawalan kebenaran peranan.
Pertama, kita perlu mengkonfigurasi komponen pengurusan pengesahan dan kebenaran rangka kerja Yii.
'components' => [ ... 'user' => [ 'identityClass' => 'appmodelsUser', 'enableAutoLogin' => true, ], 'authManager' => [ 'class' => 'yiibacDbManager', ], ... ],
Dalam konfigurasi di atas, kami menyatakan identityClass
komponen pengesahan pengguna sebagai appmodelsUser
dan mendayakan fungsi log masuk automatik. Pada masa yang sama, kami menggunakan komponen pengurusan kebenaran pangkalan data rangka kerja Yii. identityClass
为appmodelsUser
,并开启了自动登录功能。同时,我们使用了Yii框架的数据库授权管理组件。
接下来,我们需要创建一个中间件类来处理权限控制。
namespace appmiddleware; use Yii; use yiiaseAction; use yiiaseActionFilter; use yiiwebForbiddenHttpException; class RBACMiddleware extends ActionFilter { public function beforeAction($action) { $user = Yii::$app->user; // 如果用户未登录,则跳转到登录页面 if ($user->isGuest) { $user->loginRequired(); } // 获取当前用户的权限 $permission = $action->controller->id . '/' . $action->id; // 检查用户是否有访问权限 if (!$user->can($permission)) { throw new ForbiddenHttpException('您没有权限访问该页面。'); } return parent::beforeAction($action); } }
在上述中间件类中,我们重写了beforeAction
方法。在该方法中,我们首先检查用户是否已登录,如果未登录,则跳转到登录页面。
然后,我们使用$action
对象获取当前请求的控制器和方法名,并拼接成权限字符串。接着,我们通过调用Yii::$app->user->can($permission)
方法来检查当前用户是否有访问权限。
如果用户没有访问权限,我们将抛出一个ForbiddenHttpException
异常,提示用户没有权限访问该页面。
接下来,我们需要在控制器类中使用我们刚刚创建的中间件。
namespace appcontrollers; use yiiwebController; use appmiddlewareRBACMiddleware; class UserController extends Controller { public function behaviors() { return [ RBACMiddleware::class, ]; } ... }
在上述代码中,我们通过重写控制器的behaviors
方法,将RBACMiddleware
中间件添加到控制器的行为列表中。
通过这样的操作,我们就完成了使用中间件来实现角色权限控制的配置。
接下来,让我们来看一个使用角色权限控制的示例代码。
$auth = Yii::$app->authManager; // 创建一个角色 $role = $auth->createRole('admin'); $role->description = '管理员'; $auth->add($role); // 创建一个权限 $permission = $auth->createPermission('user/delete'); $permission->description = '删除用户'; $auth->add($permission); // 给角色赋予权限 $auth->addChild($role, $permission); // 给用户授权 $auth->assign($role, $userId);
在上述示例中,我们首先通过$auth->createRole
方法创建了一个名为admin
的角色,然后创建了一个名为user/delete
的权限。
接着,我们通过$auth->addChild
方法将权限赋予角色,再通过$auth->assign
rrreee
Dalam kelas middleware di atas, kami mengatasi kaedahbeforeAction
. Dalam kaedah ini, kami mula-mula menyemak sama ada pengguna telah log masuk, dan jika tidak, lompat ke halaman log masuk. Kemudian, kami menggunakan objek $action
untuk mendapatkan nama pengawal dan kaedah permintaan semasa, dan menggabungkannya ke dalam rentetan kebenaran. Seterusnya, kami menyemak sama ada pengguna semasa mempunyai kebenaran akses dengan memanggil kaedah Yii::$app->user->can($permission)
. Jika pengguna tidak mempunyai kebenaran akses, kami akan membuang pengecualian ForbiddenHttpException
, menggesa pengguna bahawa dia tidak mempunyai kebenaran untuk mengakses halaman. Seterusnya, kami perlu menggunakan perisian tengah yang baru kami buat dalam kelas pengawal kami. 🎜rrreee🎜Dalam kod di atas, kami menambah RBACMiddleware
middleware pada senarai tingkah laku pengawal dengan mengatasi kaedah tingkah laku
pengawal. 🎜🎜Melalui operasi ini, kami telah melengkapkan konfigurasi menggunakan perisian tengah untuk melaksanakan kawalan kebenaran peranan. 🎜🎜Seterusnya, mari lihat kod sampel menggunakan kawalan kebenaran peranan. 🎜rrreee🎜Dalam contoh di atas, kami mula-mula mencipta peranan bernama admin
melalui kaedah $auth->createRole
, dan kemudian mencipta peranan bernama user/ padamkan
kebenaran. 🎜🎜Seterusnya, kami memberikan kebenaran kepada peranan melalui kaedah $auth->addChild
, dan kemudian membenarkan pengguna yang ditentukan melalui kaedah $auth->assign
. 🎜🎜Dengan contoh konfigurasi dan kod sedemikian, kami boleh melaksanakan kawalan kebenaran peranan dengan mudah menggunakan pengurusan pengesahan dan kebenaran rangka kerja Yii. Ini melindungi aplikasi kami daripada capaian yang tidak dibenarkan dan meningkatkan keselamatan aplikasi. 🎜🎜Ringkasan: 🎜🎜Melalui pengenalan di atas, kami telah mempelajari cara menggunakan fungsi pengurusan pengesahan dan keizinan rangka kerja Yii dan menggabungkannya dengan perisian tengah untuk melaksanakan kawalan kebenaran peranan. Pada masa yang sama, kami juga mempelajari cara mengkonfigurasi komponen pengurusan pengesahan dan kebenaran, serta memberikan kod sampel mudah untuk kawalan kebenaran peranan. 🎜🎜Dalam pembangunan aplikasi sebenar, kami boleh mengkonfigurasi dan menggunakan fungsi pengurusan pengesahan dan kebenaran rangka kerja Yii secara fleksibel mengikut keperluan projek untuk menyediakan perlindungan yang lebih selamat dan boleh dipercayai untuk aplikasi. 🎜Atas ialah kandungan terperinci Perisian tengah rangka kerja Yii: menggunakan pengurusan pengesahan dan kebenaran untuk melaksanakan kawalan kebenaran peranan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!