首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用内置的rbac还是构建自己的?

使用内置的rbac还是构建自己的?
EN

Stack Overflow用户
提问于 2015-10-14 09:53:02
回答 1查看 259关注 0票数 6

以下设想情况:

我在Yii2的高级模板中有一个多租户web应用程序。

此应用程序有三个门户:

  • 后端
  • 仪表板
  • 前部

每个门户都有自己的用户表进行身份验证。

(-frontend_user,

-dashboard_user,

-backend_user)

前端和仪表板可以到达最后的租户姓名,例如:

当用户尝试登录到仪表板或前端时,我必须检查他们是否有权登录。这通过列联表(例如: dashboard_user_tenant)实现。

现在,我想为仪表板应用程序构建一个rbac。

但是角色不应该挂在仪表板用户处,而应该挂在dashboard_user_tenant (应急表)上,因为每个租户的仪表板上的权限都会改变。

Yii2有自己的rbac系统,但据我所知,它并不适合我的需要。

是否有机会定制易2的rbac,或者更好地构建我自己的自定义解决方案?也许是我自己的组件?

我希望我的描述足够清楚:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-15 12:50:54

在我的一个项目中,我也有类似的愿望,但是我没有创建我自己的完整的RBAC系统,而是重写了一种检查角色的方法

在我的User component类中,我扩展了\yii\web\User,并覆盖了该类的can()函数。这允许我使用自己的方式检查适当的权限。例如

代码语言:javascript
复制
<?php

namespace app\modules\users\models;

use Yii;
use yii\web\User as WebUser;

use app\modules\users\models\UserPermissionManager;

class User extends WebUser
{
    public function can( $operation, $params = [], $allowCaching = true ) 
    {
        if(Yii::$app->user->isGuest)
        {
            return false;
        }

        return ( new UserPermissionManager() )->has( $operation );
    } 
}

在UserPermissionManager类中,它查询充满权限的数据库表,如“用户:访问”、“用户:编辑”等。

它们都有特定的用户级别分配给它们,这与我在用户数据库表中设置的用户级别有关。

can()函数所需要做的就是返回true或false,这取决于该用户是否有权限执行所要求的操作。不管你喜欢什么,你都可以处理。

这是一个相当大的系统,充分解释在一个帖子,但我希望这是有点帮助,请让我知道,如果我可以解释任何更好的!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33122126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档