Yii RBAC,运行时角色更改

时间:2013-03-30 10:22:49

标签: yii user-management rbac

我正在为Yii构建一个动态RBAC系统,我不知道如何处理这个问题:

主持人可以改变用户的角色,而且用户也可以通过获得不同的资格来改变它(让我们说成就,所以他/她可以做更多的事情,它可以双向发生)。

当他/她登录时,角色更改为Backwards(角色较少的角色)或Forwards(角色更右侧)会发生什么?无法访问他刚才有权使用的功能?或者仍然可以访问函数,直到注销/重新启动操作?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

更改授权分配的效果将是中级

只有在同一请求中发出的对IWebUser::checkAccess() 的连续调用可能会返回缓存值,因为IWebUser的默认实现,即CWebUser,使用了static属性用于缓存计算的权限。

为澄清此过程,您将在旧权限上调用IAuthManager::revoke(),在新权限上调用IAuthManager::assign()

修改

有时您通过IWebUser::setState()方法存储会话信息;如果当前登录用户的状态应随权限而改变,例如如果您存储了当前用户的角色名称,则必须考虑到这一点,然后拨打IWebUser::clearState()IWebUser::logout(),然后调用IWebUser::login() - 后者也会清除CWebUser中的缓存权限实施

CWebUser::_access被声明为 private ,因此如果要覆盖默认实现,则必须声明新属性。