检查用户是否可以访问Yii RBAC中的操作

时间:2014-03-22 21:55:48

标签: php yii rbac

我使用Yii在我的应用程序中实现了基本的RBAC功能。有角色,任务和操作设置和工作正常。

我要完成的工作如下:在用户登录时,检查用户是否有权登录我的应用程序的这个特定区域。有一个操作分配给这个特定的任务。但问题是,首选的检查方法是允许用户使用 CWebUser :: checkAccess 操作,该操作在登录时不可用,因为Yii登录工作流程是这样的:

  • 用户提供身份验证所需的信息。
  • 使用用户提供的信息创建身份实例。
  • 呼叫 IUserIdentity :: authenticate以检查身份是否有效。
  • 如果 有效,调用CWebUser :: login登录用户,并重定向用户 浏览器returnUrl。
  • 如果无效,请检索错误代码或 来自身份实例的消息并显示它。

taken from here

通过 Yii :: app() - >用户全局可用的CWebUser实例在登录状态时不会传播(列出第二项和第三项),这对我来说非常有意义。但是,为了调用checkAccess,我需要一个CWebUser实例。 CAuthManager似乎没有提供我需要的功能(没有方法可以检查用户是否具有某个原子权限(操作)或列出所有这些功能)。 在我的示例中,所需的操作通常总是与角色一起分配,但是谁知道 - 有人可能只能访问这一个登录操作,这是我想要覆盖的情况。

非常感谢!

1 个答案:

答案 0 :(得分:0)

CAuthManager已经有checkAccess方法,可以执行您需要的操作。有关更多信息,您可以查看Yii的官方文件:

IAuthManager

相关问题