내 Yii2 고급 응용 프로그램에서 DBManager를 사용하여 RBAC를 구현하려고합니다. 여러 소스에서 RBAC에 대해 읽었으며 https://yii2-cookbook.readthedocs.io/security-rbac/과 같이 RBAC를 구현했지만 작동하지 않습니다. 여기 내 코드가있다. 콘솔에서 RbacController.php에서 일반/설정Yii2 DBManager 할당 규칙을 사용하는 RBAC 구현이 실패합니다.
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 서버 DB를
- 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
오류를 설명해주십시오. –
오류는 약 누구나 액세스 할 수없는 페이지입니다. 관리자가 액세스 할 수 없으며 sbr이 액세스 할 수 없으며 권한이없는 사용자도 액세스 할 수 없습니다. 나는 역할이 제대로 할당되지 않는다고 생각한다. 역할을 할당 할 때 누락 된 것이있을 수 있습니까? – Kurniawantaari