【发布时间】:2014-03-22 21:55:48
【问题描述】:
我已经使用 Yii 在我的应用程序中实现了基本的 RBAC 功能。有角色、任务和操作设置和工作正常。
我想要完成的是:在用户登录时,检查用户是否有权登录到我的应用程序的这个特定区域。有一个分配给这个特定任务的操作。然而,问题是,检查的首选方法是允许用户使用操作是 CWebUser::checkAccess,因为 Yii 登录工作流程如下所示,该操作在登录中不可用:
- 用户提供身份验证所需的信息。
- 使用用户提供的信息创建身份实例。
- 呼叫 IUserIdentity::authenticate 检查身份是否有效。
- 如果 有效,调用 CWebUser::login 登录用户,并重定向用户 浏览器返回Url。
- 如果无效,请检索错误代码或 来自身份实例的消息并显示它。
通过 Yii::app()->user 全局可用的 CWebUser 实例在登录状态时不会传播(列出项目二和三),这对我来说非常有意义。但是,为了调用 checkAccess 我需要一个 CWebUser 实例。 CAuthManager 似乎没有按原样提供我需要的功能(没有方法可以检查用户是否具有特定的原子权限(操作)或列出所有这些权限)。 在我的示例中,所需的操作通常总是与角色一起分配,但谁知道呢 - 有人可能只能访问登录这一操作,这是我想介绍的情况。
非常感谢!
【问题讨论】:
-
CAuthManager有 checkAccess 方法。检查权限 -
太棒了——成功了!您介意将其发布为答案以便我接受吗? :)
-
不客气。我现在就做;)