1、配置用户 MODEL 实现接口yii\web\IdentityInterface
2、配置文件
components=>[
'authManager' => [
//http://www.yiichina.com/doc/api/2.0/yii-rbac-dbmanager
'class' => 'yii\rbac\DbManager',
],
'user' => [
//http://www.yiichina.com/doc/api/2.0/yii-web-user
// 指定用户模块的验证类
'identityClass' => 'api\models\Members',
//这里关系到cookie自动登入,应该为false
'enableAutoLogin' => false,
//这里是否开启session记录
'enableSession'=>false,
'identityCookie' => ['name' => '_identity-frontend', 'httpOnly' => true],
],
]
3、在命令行下创建表 yii migrate --migrationPath=@yii/rbac/migrations
4、通过语句创建权限,RBAC 与用户的关联为 ID 关联角色。
$auth = Yii::$app->authManager;
//创建权限
$default = $auth->createPermission('default');
$auth->add($default);
//创建角色
$admin = $auth->createRole('admin');
$auth->add($admin);
//权限和角色关联
$auth->addChild($admin,$default);
//角色和用户关联
$auth->assign($admin,123);
5、RBAC 还可以增加 RULE 规则,需要实现 yii\rbac\Rule 的execute 方法
/** * @param string|integer $user 用户 ID. * @param Item $item 该规则相关的角色或者权限 * @param array $params 传给 ManagerInterface::checkAccess() 的参数,这里的参数通过 Yii::$app->user->can('xxx',[ 这里以数组方式传入 ]); *@return boolean 代表该规则相关的角色或者权限是否被允许 */publicfunctionexecute($user,$item,$params) {
// 通过返回 true 或 false 来表示用户是否有权限returnisset($params['post']) ? $params['post']->createdBy == $user :false; }
6、通过 revoke 方法删除用户与权限关联
$auth = Yii::$app->authManager;
$admin = $auth->createRole('admin');
$auth->revoke($admin,123);