UA引起的后台登录问题,登录成功,但验证失败导致反复登录却无登录状态

kenw2004
kenw2004 这家伙很懒,还没有设置简介

0 人点赞了该文章 · 3086 浏览

可能是由于UA引起的,在偶尔在登录网站后台时,登录成功,却无登录状态,导致卡在登录中一直无法成功。
这是个非常偶尔的情况,大多数情况都能登录成功,偶尔,即时使用和以前一样的浏览器,也会登录不了,尤其是使用手机端时。
原因可能是某些浏览器UA过长或有特殊字符。
 
程序版本:3.1.9(不知道最新的3.3版本会不会有这个问题)
解决方法:将ua字符串md5后再用
修改2处文件:
-----------
文件1:model/admin.php
-----------
    public function set_admin_login($uid)
    {
        AWS_APP::session()->admin_login = AWS_APP::crypt()->encode(json_encode(array(
            'uid' => $uid,
            'UA'  => md5($_SERVER['HTTP_USER_AGENT']),
            'ip'  => fetch_ip(),
        )));
    }
 
-----------
文件2:system/aws_controller.inc.php
class AWS_ADMIN_CONTROLLER中,对照修改
-----------
            if ($admin_info['uid'] != $this->user_id OR $admin_info['UA'] != md5($_SERVER['HTTP_USER_AGENT']) OR !AWS_APP::session()->permission['is_administortar'] AND !AWS_APP::session()->permission['is_moderator']) {
                unset(AWS_APP::session()->admin_login);
                if ($_POST['_post_type'] == 'ajax') {
                    H::ajax_json_output(AWS_APP::RSM(null, -1, AWS_APP::lang()->_t('会话超时, 请重新登录')));
                } else {
                    H::redirect_msg(AWS_APP::lang()->_t('会话超时, 请重新登录'), '/admin/login/url-' . base64_encode($_SERVER['REQUEST_URI']));
                }
            }
-----------
 
另,前台登录偶尔也有这个问题,本次发文过程中,就遇到了登录问题,使用chrome无法成功登录,换了个浏览器才登录上来了。
 
前台登录也偶尔有这个登录的bug,但目前尚未找到原因。
 
再,这个技术社区,编辑器没有代码模式。

发布于 2019-04-18 01:49

免责声明:

本文由 kenw2004 原创发布于 WeCenter ,著作权归作者所有。

登录一下,更多精彩内容等你发现,贡献精彩回答,参与评论互动

登录! 还没有账号?去注册

imningfeng
2019-04-18 05:13
没有遇到过这种问题