【问题标题】:Cakephp different sessions for different usersCakephp针对不同用户的不同会话
【发布时间】:2018-08-21 07:52:43
【问题描述】:

我有 cakephp 应用程序,它有两个单独的登录名,一个用于管理员,一个用于员工。我正在使用会话来存储登录详细信息。但是当我从管理员注销时,它会自动从员工注销,反之亦然。我可以为此使用两个不同的会话吗?

我没有使用基于角色的登录。相反,我正在使用管理插件 管理员应用控制器

 $this->loadComponent('Auth', [
                'loginAction' => ['controller' => 'Users', 'action' => 'login'],
            'logoutRedirect' => [
                'controller' => 'Users',
                'action' => 'login',
            ],
                'authenticate' => [
                    'Form' => [
                        'userModel' => 'Users',
                        'fields' => ['username' => 'username', 'password' => 'password']
                    ]
                ],
                'authError' => 'Enter Credentials',
                'storage' => 'Session',
                'unauthorizedRedirect' => false

            ]
        );

员工应用控制器

  $this->loadComponent('Auth', [
            'loginAction' => [
                'controller' => 'Employees',
                'action' => 'loginemp'
            ],
            'logoutRedirect' => [
                'controller' => 'Employees',
                'action' => 'loginemp',
            ],
            'authError' => 'Enter Credentials',
            'authenticate' => [
                'Form' => [
                    'userModel' => 'Employees',
                    'fields' => ['username' => 'username', 'password' => 'password']
                ]
            ],
            'storage' => 'Session',
            'unauthorizedRedirect' => false
        ]);

【问题讨论】:

  • 请指定您使用的管理插件。也请分享admin App Controller的代码。

标签: session cakephp


【解决方案1】:

改变

'storage' => 'Session'

'storage' => [                       // Add this array
                'className' => 'Session',
                'key' => 'Auth.Admin',              
            ],

在您的管理面板中验证配置。

例如假设下面的管理面板 Auth 配置:

$this->loadComponent('Auth', [
                    'loginAction' => ['controller' => 'Users', 'action' => 'login'],
                'logoutRedirect' => [
                    'controller' => 'Users',
                    'action' => 'login',
                ],
                    'authenticate' => [
                        'Form' => [
                            'userModel' => 'Users',
                            'fields' => ['username' => 'username', 'password' => 'password']
                        ]
                    ],
                    'authError' => 'Enter Credentials',
                    'storage' => [              // Change this
                            'className' => 'Session',
                            'key' => 'Auth.Admin',              
                    ],
                    'unauthorizedRedirect' => false

                ]
            );

【讨论】:

  • 这是有效的,但我不能再从管理员注销
  • 公共函数 logout() { return $this->redirect($this->Auth->logout()); }
  • @SmitaKagwade 太棒了!不要忘记接受答案。它会帮助其他人。并继续学习
猜你喜欢
  • 1970-01-01
  • 2013-08-13
  • 2017-06-07
  • 1970-01-01
  • 2018-07-10
  • 2019-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多