Yii2的rbac怎么关联某一个具体的action,有人有例子吗?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Yii2的rbac怎么关联某一个具体的action,有人有例子吗?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2378字,纯文字阅读大概需要4分钟。
内容图文
看到Yii::$app->authManager->createPermission('createPost')就可以创建createPost权限了;然后再分配给某个用户,该用户就拥有这个权限了。
我认为'createPost'应该仅仅是权限的名字而已,事实上他也许对应一个logout操作(假设)。那么Yii怎么把权限和具体的action关联起来的呢?
是不是要配合AccessColtrol来使用呢?如果是,那要这个permission有什么意义呢?直接给role不就可以了?
求指教。3Q first~
回复内容:
看到Yii::$app->authManager->createPermission('createPost')就可以创建createPost权限了;
然后再分配给某个用户,该用户就拥有这个权限了。
我认为'createPost'应该仅仅是权限的名字而已,事实上他也许对应一个logout操作(假设)。那么Yii怎么把权限和具体的action关联起来的呢?
是不是要配合AccessColtrol来使用呢?如果是,那要这个permission有什么意义呢?直接给role不就可以了?
求指教。3Q first~
正好做到做鉴权判断这块,我给你解答。
AccessColtrol 这种是一种形式
index、view 两个动作就是能通过AccessColtrol来判断了
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'only' => ['index', 'view', 'create', 'update'],
'rules' => [
[
'actions' => ['index'], //来宾可见
'allow' => true,
'roles' => ['?'],
],
[
'actions' => ['view', 'create', 'update'], //登录用户
'allow' => true,
'roles' => ['@'],
],
[
'actions' => ['create', 'update'], //Post请求
'allow' => true,
'verbs' => ['POST']
],
],
],
];
}
public function actionIndex()
{
return '来宾可见';
}
public function actionView()
{
echo '登录用户可见:'."\n";
return Yii::$app->user->identity->id;
}
使用Rbac,放在各自的方法里
优点是使用灵活,缺点是每次都要写相识的代码
public function actionCreate()
{
if (Yii::$app->user->can('CreatePost')) {
return '可以的';
} else {
throw new UnauthorizedHttpException('对不起,您现在还没获此操作的权限。');
}
}
public function actionUpdate()
{
if (Yii::$app->user->can('UpdatePost')) {
return '可以的';
} else {
throw new UnauthorizedHttpException('对不起,您现在还没获此操作的权限。');
}
}
使用Rbac,放在beforeAction这个方法里
正好跟上面一点相反,要根据请求的动作来判断哪个权限
public function beforeAction($action) {
if (parent::beforeAction($action)) {
//print_r($action); // 权限名字传递过去(CreatePost)
if (!Yii::$app->user->can('CreatePost')) {
throw new UnauthorizedHttpException(Yii::t('yii', '对不起,您现在还没获此操作的权限'));
}
return true;
} else {
return false;
}
}
最后给你参考资料:http://www.yiichina.com/doc/guide/2.0/security-authorization
[该用户已被屏蔽]被屏蔽是什么意思啊?
Javascript局部变量有没有属性描述符
内容总结
以上是互联网集市为您收集整理的Yii2的rbac怎么关联某一个具体的action,有人有例子吗?全部内容,希望文章能够帮你解决Yii2的rbac怎么关联某一个具体的action,有人有例子吗?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。