当我更改密码时,如何进行销毁会话?

时间:2018-03-26 04:28:34

标签: php codeigniter session login logout

我是CodeIgniter框架的中间人

我将开发一个具有“管理员,经理,员工”角色的新系统。我需要管理员或经理更改任何员工密码,员工会话需要销毁并从他们的帐户注销。

我对此一无所知。任何人都可以帮助如何做到这一点,为此我必须选择哪种类型的会话保存路径?

2 个答案:

答案 0 :(得分:1)

有一个简单的解决方案:

1 - 在您的用户表格中添加一个名为" forcelogout"例如,它可以是具有2个选项的ENUM' Y'或者' N'和默认值' N'

ALTER TABLE `users` ADD COLUMN `forcelogout` ENUM('Y','N') NOT NULL DEFAULT 'N' COMMENT 'Y: force user to logout, N: nothing to do'

2 - 更新用户密码时,请将该字段值更新为' N'

3 - 在您的父控制器(application / core / MY_Controller.php)中,选中" forcelogout"价值和退出用户,如果它' Y'。然后将值更新为' N'避免循环

public function __construct()
{
    $this->do_we_need_to_logout_user();
}

private function do_we_need_to_logout_user(){
    $this->load->model('users_model');
    $user = $this->users_model->get_user($this->session->user_id);
    if ( $user[0]->forcelogout == 'Y' ){
        $user_id = $this->session->user_id;
        $this->session->sess_destroy();
        $user = array();
        $user['forcelogout'] = 'N';
        $this->users_model->update_user($user_id, $user);
        redirect('/login');
    }
}

答案 1 :(得分:0)

管理员,经理方:他们更改员工密码。

在员工方面:每次检索员工数据时,请检查密码状态是否已更改。如果是,则销毁该员工的会话。

再次成功登录后,将密码状态设置为null或其他内容。