如何改进cakephp auth组件使用用户类型?

时间:2010-01-15 11:43:29

标签: cakephp

我在我的cakephp项目中使用auth componnet

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

枚举类型:admin,client

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

当然没有使用ACL或任何其他相关的

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

isAuthorized()是最好的选择。 我建议将用户与他们在数据库中的组分开,因此用户habtm Group ...但如果用户属于一个且只有一个组,那么这不是问题 我不建议对非基于记录级别的权限系统使用ACL

答案 2 :(得分:0)

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

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

从那里,您可以通过简单的谷歌搜索“CakePHP Auth用户组”跟踪Auth组件的大量组访问控制教程中的任何一个