【问题标题】:how to improve cakephp auth component to use user type?如何改进 cakephp auth 组件以使用用户类型?
【发布时间】:2010-01-15 11:43:28
【问题描述】:

我在我的 cakephp 项目中使用 auth 组件

我将类型字段添加到用户 Mysql 表中

那个枚举类型:admin、client

我需要身份验证组件将管理员重定向到 CP 页面,并将客户端重定向到他们的个人资料页面,并且只能访问一个控制器..

当然不使用 ACL 或任何其他相关

【问题讨论】:

    标签: cakephp


    【解决方案1】:

    我建议您利用可以添加到控制器或模型中的 isAuthorized() 函数。设置 AuthComponent::authorize = {'controller'|'model'} 以选择您要使用的。

    然后你在模型|控制器中编写一个 isAuthorized() 函数,它为每个操作返回 t/f on auth/not auth。如果您愿意,您也可以进行一些行级检查。

    现在,如果您只是想将管理员重定向到登录/等时的正确页面,您可以将代码添加到 beforeFilter() 方法(在特定控制器或 app_controller.php 中)。在这里,只需检查应用程序设置的管理员值是否与用户的管理员值相同(AuthComponent 会将其存储在 Session 数据中,可通过 $this->Auth->User() 访问)。然后适当地路由到管理/非管理区域。

    【讨论】:

      【解决方案2】:

      isAuthorized() 是最好的选择。 我建议将用户与其在数据库中的组分开,所以用户 habtm 组...但如果用户属于一个且仅一个组,这不是问题 我不建议将 ACL 用于非基于记录级别的权限系统

      【讨论】:

        【解决方案3】:

        只是需要注意的一点,但除非最近发生了变化,否则 CakePHP 不支持 ENUM 列类型。

        最好的选择是组模型(groups mysql 表)和 users 表上的 group_id 字段。 然后你可以 $hasOne = array( 'Group' );在您的用户模型中。

        从那里,您可以通过简单的谷歌搜索“CakePHP Auth User Group”来遵循大量关于 Auth 组件的组访问控制教程中的任何一个

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-05
          • 2010-12-13
          • 2016-12-27
          相关资源
          最近更新 更多