我们正在开发一个项目,其中有4个角色。但在CakePHP的3.x的验证组件保存使用在cakephp 3.x中为前端用户和管理员单独验证
$this->Auth->setUser($user);
这个由于我们无法从管理面板访问前端用户帐户Auth.User索引验证会话的用户数据出于某种目的,因为当我们从管理面板登录到前端用户时,前端登录操作会执行和重写会话值。
所以,如果有任何过程来处理这个问题,请给我们建议。
预先感谢您。
我们正在开发一个项目,其中有4个角色。但在CakePHP的3.x的验证组件保存使用在cakephp 3.x中为前端用户和管理员单独验证
$this->Auth->setUser($user);
这个由于我们无法从管理面板访问前端用户帐户Auth.User索引验证会话的用户数据出于某种目的,因为当我们从管理面板登录到前端用户时,前端登录操作会执行和重写会话值。
所以,如果有任何过程来处理这个问题,请给我们建议。
预先感谢您。
以及我已经了解到,您并未使用前缀来管理后端和前端用户,那么您可能会使用单独的文件夹结构作为后端,对吗?
你是对的,$this->Auth->setUser($user);
总是保持与Auth.User
索引会话。所以,你需要编写后端不同的会话索引,你可以做到这一点如下:
对于后端用户认证: **
$this->loadComponent('Auth', [
'authorize' => ['Controller'], // Added this line
'loginRedirect' => [
'controller' => 'Users',
'action' => 'dashboard',
'prefix' => 'admin_panel'
],
'logoutRedirect' => [
'controller' => 'Users',
'action' => 'login',
'prefix' => 'admin_panel'
],
'storage' => [
'className' => 'Session',
'key' => 'Auth.Admin',
]
]);
**
在这里你可以在'storage'数组键值中传递所需的索引。 我认为它会适合你。
谢谢@克里希纳古普塔,它适合我。而你的回答完全满足了我的要求。干得好,再次非常感谢你。 – user7738665
欢迎您... –
查看此列表中CakePHP插件的部分Authentication and Authorization。
例如,您可以使用dereuromarks TinyAuth Plugin来授权您的用户并配置他们能够看到的内容。
这样,您就可以使用相同的认证(知晓differences between Authentication and Authorization的)和相同用户表,这将阻止你提到的Session
冲突。
Auth组件会覆盖前一个会话,因为它始终将会话存储在Auth.users中,因此我们必须更改不同角色的会话密钥。
如果您使用URL前缀访问不同的角色,那么您可以这样做。
AppController.php
public function beforeFilter(Event $event)
{
if($this->request->params['prefix']){
$this->Auth->config('storage', [
'key'=>'Auth.'.$this->request->params['prefix'],
'className'=>'Session'
]);
}
return parent::beforeFilter($event); // TODO: Change the autogenerated stub
}
这将作为您需要创建验证不同的角色。 会议将是这样的
[
'Auth'=>[
'User'=>['id'=>''],
'Admin'=>['id'=>''],
]
]
测试它,工作对我很好。
我们不使用管理面板的前缀 – user7738665
那么你在使用什么,你如何管理访问? –
选中此http:// stackoverflow。com/questions/39645441/authorize-users-based-roles-in-cakephp-3#answer-39647402 –
@AmanRawat提供的链接的答案将只允许行动,这不会对我的问题起作用 – user7738665
@AmanRawat我的问题与此完全不同 – user7738665