向CakePHP身份验证组件添加多个角色
我正在使用本教程向我的应用程序添加身份验证和授权组件 问题是,我找到的所有教程都假设用户只有一个角色。在附加的视频中,角色只是用户表中的一个枚举字段。我有三张桌子:向CakePHP身份验证组件添加多个角色,cakephp,cakephp-2.3,Cakephp,Cakephp 2.3,我正在使用本教程向我的应用程序添加身份验证和授权组件 问题是,我找到的所有教程都假设用户只有一个角色。在附加的视频中,角色只是用户表中的一个枚举字段。我有三张桌子: 用户表 角色表 责任表 链接角色和职责的表 链接用户和角色的表 我让登录过程正常工作,直到获得登录用户的角色。最好的方法是什么?有人知道有一个教程也包括这个吗?我用的是蛋糕2.5.2 我可以发布任何你可能认为相关的代码,但我在视频中有很多内容。此外,代码的许多内部工作似乎都被隐藏了。任何建议都很好 谢谢 编辑 以下是我希望添加到us
**User Table:**
id (pk)
first_name
last_name
username
password
**Role Table**
id(pk)
role_name
**Responsibility Table**
id(pk)
responsibility_name
**user_roles_membership**
id(pk)
role_id(fk)
user_id(fk)
**roles_responsibilities_membership**
id(pk)
roles_id(fk)
responsibility_id(fk)
要详细回答这个问题,我需要为您编写完整的代码或一篇详尽的文章——我不会这么做。相反,我会给你指出正确的方向 用户登录后,获取该用户的所有相关角色和职责。以下代码取自文档(请阅读整页!)。我不知道你的数据是如何关联的,所以我只是在这里猜测
$this->Auth->authenticate = array(
AuthComponent::ALL => array(
'contain' => array(
'Responsibility',
'Role'
)
),
'Form'
);
在用户现在登录后查看您的会话,您应该会在那里看到附加数据。例如,使用DebugKit或debug()调试会话
下一件事是编写一个定制的授权处理程序来处理该数据。文档向您展示了如何做到这一点
在authorize()方法中,添加检查当前登录用户(作为第一个参数传递)权限所需的任何逻辑,并根据您希望在请求中检查的任何逻辑(作为第二个参数传递)检查权限
所有这些都是非常直截了当的,并且有很好的文档记录。同样,我建议你阅读整页。这对你来说应该是显而易见的,然后如何做到这一点
此外,如果您在实施过程中遇到问题,您可能需要提出一个比这个非常普通的问题更具体的问题。至少对多角色部分可能有帮助。责任可以使用控制器或组件单独处理。很抱歉没有尽快响应。谢谢你的回复。我相信我已经阅读了您的建议,但我仍然存在一些问题,包括用户会话对象的角色/职责值。当我调试时,我可以在This->Controller->Auth->authenticate->all->contain对象中看到“Responsibility”和“Role”,但不能看到实际关联的值。您提供的代码是否应该从数据库中提取这些数据并将其插入会话中?
App::uses('BaseAuthorize', 'Controller/Component/Auth');
class MyAuthorize extends BaseAuthorize {
public function authorize($user, CakeRequest $request) {
// Do things for your permission system here.
}
}