我想在我的Yii2高級應用程序中使用DBManager實現RBAC。 我已經閱讀了幾個來源的RBAC,並在https://yii2-cookbook.readthedocs.io/security-rbac/中實現了RBAC,但它不起作用。這是我的代碼。Yii2 RBAC實現使用DBManager分配規則失敗
在RbacController.php在控制檯下的common /配置return [
'vendorPath' => dirname(dirname(__DIR__)) . '/vendor',
'components' => [
'cache' => [
'class' => 'yii\caching\FileCache',
],
'authManager' => [
'class' => 'yii\rbac\DbManager',
],
],
];
的main.php
/控制器
namespace console\controllers;
use Yii;
use yii\console\Controller;
class RbacController extends Controller {
public function actionAssign($role, $username) {
$user = User::find()->where(['username' => $username])->one();
if (!$user) {
throw new InvalidParamException("There is no user \"$username\".");
}
$auth = Yii::$app->authManager;
$asrole = $auth->getRole($role);
if (!$asrole) {
throw new InvalidParamException("There is no role \"$role\".");
}
$auth->assign($asrole, $user->id);
}
}
遷移文件
use yii\db\Migration;
class m160616_092939_rbac_init extends Migration
{
public function up()
{
$auth = Yii::$app->authManager;
//add permission
$manageGivenTable = $auth->createPermission('manageGivenTable');
$manageGivenTable->description = 'Manage and Generate Given Table ';
$auth->add($manageGivenTable);
//add permission
$manageUsers = $auth->createPermission('manageUsers');
$manageUsers->description = 'Manage users';
$auth->add($manageUsers);
//add role. dan ngasih tahu kalau yang tergabung di sbr dapat memanage given tabel
$sbr = $auth->createRole('sbr');
$sbr->description = 'Tim SBR BPS HQ';
$auth->add($sbr);
$auth->addChild($sbr, $manageGivenTable);
//add role dan ngasih tahu kalau admin dapat memanage user dan sekaligus mewarisi sifat-sifat sbr
$admin = $auth->createRole('admin');
$admin->description = 'Web Administrator, Editor, and Developer';
$auth->add($admin);
$auth->addChild($admin, $sbr);
$auth->addChild($admin, $manageUsers);
}
我嘗試在關於頁面。在控制器文件,我添加
'actions' => ['about'],
'allow' => true,
'roles' => ['manageUsers'],
注:可能是這樣的信息需要
- 我使用MS SQL Server數據庫
- The auth_item table and auth_item_child table
- 其它驗證表是空的。
- 對不起,英語不好。
你能幫我嗎? 編輯:我使用的命令是這樣
yii rbac/assign admin adminname
在未來
提示的東西實現角色分配,我想通過管理面板來分配用戶角色。
我讀過的另一個來源:http://stackoverflow.com/questions/24554712/yii2-role-management-with-rbac-and-database-storage和http://www.yiiframework.com/doc- 2.0/guide-security-authorization.html – Kurniawantaari
請解釋你的錯誤 –
錯誤是關於任何人無法訪問的頁面。 admin無法訪問它,sbr無法訪問它,未經授權的用戶也無法訪問它。我認爲角色分配不當。分配角色時可能缺少某些東西? – Kurniawantaari