C. *_*ris 9 php rule rbac yii2
大家好,我已经看过很多Yii 2 RBAC教程,但我真的不太欣赏如何实现规则.在Yii 2指南中,他们介绍了如何制定规则,但实际上并不是如何在控制器的行为或其他地方实现规则.关于这个问题我真的需要一些启示.
我现在拥有的是一个文件上传系统,我有两个角色,即admin和encoder.基本上,admin角色可以完成所有操作,而编码器角色只能创建,查看拥有,更新拥有和删除拥有.我已经创建了一个名为encodedBy的规则.
这是我在EncoderRule中的代码
namespace app\rbac; use yii\rbac\Rule;
/** * Checks if encoded_by matches user passed via params */ class EncoderRule extends Rule {
public $name = 'encodedBy';
/**
* @param string|integer $user the user ID.
* @param Item $item the role or permission that this rule is associated with
* @param array $params parameters passed to ManagerInterface::checkAccess().
* @return boolean a value indicating whether the rule permits the role or permission it is associated with.
*/
public function execute($user, $item, $params)
{
return isset($params['document']) ? $params['document']->encoded_by == $user : false;
} }
Run Code Online (Sandbox Code Playgroud)
我将数据存储在'document'表中,我有一个名为'encoded_by'的字段.我希望你们可以帮助我.非常感谢!!!
小智 3
如果我清楚地理解你,你想使用 Yii2 RBAC 规则来实现系统用户(管理员和编码器)的一些权限。嗯,这在某种程度上是非常简单的
Yii2 有用于此目的的现有表。这些表是 i。auth_assignment ii. 授权分配 auth_item iii. auth_item_child 四.授权规则
您需要做的第一件事是选择要使用 PhpManager 或 DBManager 的 authManager,但我建议您使用 DBManager 原因是,这就是我使用的
如果您使用的是 Yii2 Basic 模板,请在 web.php 的组件下添加以下代码行
'authManager' => [
'class' => 'yii\rbac\DbManager',
'defaultRoles' => ['guest'],
],
Run Code Online (Sandbox Code Playgroud)
如果是Yii2 Advanced 模板,请在 \common\config 文件夹内的 main.php 的组件下添加以下代码行
完成上述步骤后,
上面的代码将生成/创建之前在数据库中自动列出的四个表
创建您的 RBAC 规则。
这需要您创建权限和角色。
对于基本模板,
请参阅http://pastebin.com/RAKpZX2J查看其外观
对于高级模板, - 创建相同的文件,但它将位于 console\controllers\RbacController.php 内
做完这一切之后,
如果您成功创建了上述所有内容,您可以执行类似的操作来了解用户是否具有权限
if(Yii::$app->user->can('createUser')){
}
Run Code Online (Sandbox Code Playgroud)
我希望这有帮助..
归档时间: |
|
查看次数: |
5216 次 |
最近记录: |