thinkphp6如何在本地IP不变的情况下自动登录后台

程序猿 2021-03-12 22:40:52 1319浏览 加载中

原理

第一次登录的时候设置cookie,再次登录的时候先获取cookie进行校验,为了安全起见还要做一些简单的加密。cookie在本地保存,容易泄漏,为了安全可以和本地IP做下绑定,这样就算泄漏在其它电脑上也是登录不了的,当然在同一个局域网内还是可以访问的,同网中也没有人黑你吧。

代码

// 登录成功后设置 cookie 
$ip = get_real_ip();    // 获取客户真实的IP,下面有介绍
$token = md5($pass . $ip); // $pass 为用户的密码,和真实的IP做一个简单的MD5加密
cookie("username",$username,604800); // 7天
cookie("token",$token,3600*24*7); //7天

第二次登录代码

$username = cookie("username");
$token = cookie("token");
$ip = get_real_ip();  
$user = UserModel::where("username",$username)->find();
if ($user) {
    $pass = $user->pass;
    $t = md5(pass . $ip);
    if ($t == $token) {
        session("username",$username) // 记录session登录状态
        $this->redirect("/admin",301); // 跳转到后台页面
    }
}
// 其它逻辑自行脑补。

说明

get_real_ip()是自定义获取真实IP的方法,点击可以查看相应代码。

最后修改:2024-04-17 05:40:41

非特殊说明,本博所有文章均为博主原创。