框架:thinkPHP5
最近项目中登录用到长时间登录的,就选择cookie 而非 session,由于员工离职盗号等问题,用户登录之后,不会自动退出,现在需要修改密码强制账号登出:
具体流程:
1、用户注册的时候,产生随机值,存储,并参与密码加密
2、登录的时候,记录用户信息 cookie
3、操作时判断,用户cookie随机值判断数据库用户信息随机值是否一致,不一致直接清空cookie
3、修改用户密码,随机值一并修改,修改完密码强制登出
处理方案:
1、
$_COOKIE['user_id_with_app'] // 记录登录信息
$_COOKIE['user_id_with_str'] 记录登录账号随机值,用于记录用户密码加密
2、数据库用户信息记录 user_id_with_str 也记录与数据库中
3、在模块的中加入实例化,实时判断用户登录
public function _initialize()
{
// 判断是否获取用户登录信息 cookie 用户记录信息
if(empty(getLoginUserId())){
// 清除 用户 cookie
setLoginUserId(null);
$this->redirect("/Admin/Login");
}else{
// 获取用户登录随机值 cookie记录用户随机值
$str = getLoginUserStr();
$admin = model('Admin')->where(['id'=>getLoginUserId()])->find();
// cookie随机值 是否与 数据库存储惟一值
if($admin['str'] != $str) {
// 清除 用户 cookie
setLoginUserId(null);
$this->redirect("/Admin/Login");
}
}
}