以下设想情况:
我在Yii2的高级模板中有一个多租户web应用程序。
此应用程序有三个门户:
每个门户都有自己的用户表进行身份验证。
(-frontend_user,
-dashboard_user,
-backend_user)
前端和仪表板可以到达最后的租户姓名,例如:
当用户尝试登录到仪表板或前端时,我必须检查他们是否有权登录。这通过列联表(例如: dashboard_user_tenant)实现。
现在,我想为仪表板应用程序构建一个rbac。
但是角色不应该挂在仪表板用户处,而应该挂在dashboard_user_tenant (应急表)上,因为每个租户的仪表板上的权限都会改变。
Yii2有自己的rbac系统,但据我所知,它并不适合我的需要。
是否有机会定制易2的rbac,或者更好地构建我自己的自定义解决方案?也许是我自己的组件?
我希望我的描述足够清楚:)
发布于 2015-10-15 12:50:54
在我的一个项目中,我也有类似的愿望,但是我没有创建我自己的完整的RBAC系统,而是重写了一种检查角色的方法
在我的User component类中,我扩展了\yii\web\User,并覆盖了该类的can()函数。这允许我使用自己的方式检查适当的权限。例如
<?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,这取决于该用户是否有权限执行所要求的操作。不管你喜欢什么,你都可以处理。
这是一个相当大的系统,充分解释在一个帖子,但我希望这是有点帮助,请让我知道,如果我可以解释任何更好的!
https://stackoverflow.com/questions/33122126
复制相似问题