在做一个新项目时,采用了FastAdmin框架。同一个账号总会出现两次需要登录的情况,用户体验很差。
经过排查发现fastadmin的默认登录验证会对ip进行对比。 将数据库保存的最后一次登录ip与当前ip比较,如果不相同则会跳转到登录页重新登录,并更新当前ip地址。

文件位置:application/admin/library/Auth.php 中的isLogin方法下
//判断管理员IP是否变动
if (Config::get('fastadmin.loginip_check')) {
if (!isset($admin['loginip']) || $admin['loginip'] != request()->ip()) {
$this->logout();
return false;
}
}
$this->logined = true;
return true;
修改为:
//判断管理员IP是否变动
if (Config::get('fastadmin.loginip_check')) {
if (!isset($admin['loginip']) || $admin['loginip'] != request()->ip(0, false)) {
return false;
}
}
$this->logined = true;
return true;
下面还有更简单的办法:
最近给Fastadmin部署了EdgeOne,发现后台无法登录了。才发现是IP变动,登录的时候做了判断
为了后台安全,新版本默认开启了后台IP变动检测,如果你需要关闭此功能,
[uv]可以修改application/config.php,将loginip_check置为false即可。[/uv]













这一切,似未曾拥有