【问题标题】:how to set different sessions for user and admin | CodeIgniter如何为用户和管理员设置不同的会话 |代码点火器
【发布时间】:2020-09-28 13:51:50
【问题描述】:

你好,我正在做一个用户和管理员有不同登录名的项目 我想为用户和管理员设置不同的会话 这是我如何设置管理会话

$this->session->set('adminData', [
            'id'            => $teacher['id'],
            'name'          => $teacher['name'],
            'email'         => $teacher['email'],
            'new_email'     => $teacher['new_email']
        ]);

用户的会话数据如下

$this->session->set('userData', [
                'id'            => $teacher['id'],
                'name'          => $teacher['name'],
                'email'         => $teacher['email'],
                'new_email'     => $teacher['new_email']
            ]);

但是在验证用户时

if ($this->session->isLoggedIn) {
            return redirect()->to('admin');
        }

我面临的唯一问题是我可以以管理员或用户身份登录,但不能同时登录 当我已经以管理员身份登录时尝试以用户身份登录时,它会将我重定向到用户/帐户。

有什么方法可以让我为管理员设置 isAdminLoggedIn 并且可以为用户使用 isLoggedIn

【问题讨论】:

  • 与其让自己过于复杂,为什么不把它变成基于权限的方法呢?单个登录例程,但每个用户可能有也可能没有“管理员”权限,如果存在,则启用管理员功能?
  • @JavierLarroulet 实际上我必须根据用户和管理员组自定义所有内容。还有一些因素。所以我选择了这种方法

标签: php codeigniter session codeigniter-4


【解决方案1】:

您可以在 adminData 之前或之后设置 isAdminLoggedIn。

$this->session->set('isAdminLoggedIn', true);

并且可以在您注销时销毁会话

$this->session->remove(['isAdminLoggedIn']);

或一起

$this->session->remove(['isAdminLoggedIn', 'adminData']);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-01
    • 2019-04-29
    • 1970-01-01
    • 1970-01-01
    • 2016-12-26
    • 2016-09-24
    • 1970-01-01
    相关资源
    最近更新 更多