【问题标题】:Check if user has access to operation in Yii RBAC检查用户是否可以访问 Yii RBAC 中的操作
【发布时间】:2014-03-22 21:55:48
【问题描述】:

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

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

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

taken from here

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

非常感谢!

【问题讨论】:

标签: php yii rbac


【解决方案1】:

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

IAuthManager

【讨论】:

    猜你喜欢
    • 2013-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-01
    • 2020-04-26
    • 1970-01-01
    • 2011-10-20
    相关资源
    最近更新 更多