您现在的位置是:首页 > 经验心得经验心得

yunucms判断后台登陆错误次数限制

【经验心得】人已围观

简介后端目录如果暴露了一会 就会有一些不法的暴力破解尝试,在这儿,分享给大家一个yunucms判断登陆错误次数限制的方法。

后端目录如果暴露了一会 就会有一些不法的暴力破解尝试,在这儿,分享给大家一个yunucms判断登陆错误次数限制的方法。
如果大家想修改后端目录的方法可以参考这篇文章。
http://www.nfishinn.com/jingyanxd/27.html
站点目录找到 \app\admin\controller 下的 Index.php
大约在135 行 doLogin 方法中 覆盖此方法。
 //登录操作
    public function doLogin()
    {
        if (request()->isAjax()) {
            $username = input("param.username");
            $password = input("param.password");

            if (config('verify_type') == 1) {
                $code = input("param.code");
            }
            $db = Db::name('admin');
            $result = $this->validate(compact('username', 'password'), 'AdminValidate');
            if(true !== $result){
                return json(['code' => -5, 'data' => '', 'msg' => $result]);
            }
			//判断登陆错误限制次数提示开始
			$ip   = request()->ip();//获取用户的ip
			$time = time()-5*60;//5*60秒(5分钟)
			$count=Db::name('log')->where('ip',$ip)->where('status',2)->where('add_time','>=',$time)->count();
			//如果超过5次就提示
			if($count>=5){
				return json(['code' => -1, 'data' => '', 'msg' => '登陆次数过多请稍后再试']);
			}
			//判断登陆错误限制次数提示结束
			
            $hasUser = $db->where(['username'=>$username])->find();
            if(empty($hasUser)){
				writelog(0,$username,'用户【'.$username.'】登录失败:该账号被禁用',2);
                return json(['code' => -1, 'data' => '', 'msg' => '管理员不存在']);
            }

            if(md5(md5($password).config('auth_key')) != $hasUser['password']){
                writelog($hasUser['id'],$username,'用户【'.$username.'】登录失败:密码错误',2);
                return json(['code' => -2, 'data' => '', 'msg' => '账号或密码错误']);
            }

            if(1 != $hasUser['status']){
                writelog($hasUser['id'],$username,'用户【'.$username.'】登录失败:该账号被禁用',2);
                return json(['code' => -6, 'data' => '', 'msg' => '该账号被禁用']);
            }

            //获取该管理员的角色信息
            $user = new UserType();
            $info = $user->getRoleInfo($hasUser['groupid']);
            session('admin_username', $username);
            session('admin_uid', $hasUser['id']);
            session('groupid', $hasUser['groupid']);
            session('rolename', $info['title']);
            session('rule', $info['rules']);
            session('name', $info['name']);

            session('last_login_ip', $hasUser['last_login_ip']);
            session('last_login_time', date('Y-m-d H:i:s', $hasUser['last_login_time']));
      
            //更新管理员状态
            $param = [
                'loginnum' => $hasUser['loginnum'] + 1,
                'last_login_ip' => request()->ip(),
                'last_login_time' => time()
            ];

            $db->where(['id'=>$hasUser['id']])->update($param);
            writelog($hasUser['id'], session('admin_username'), '用户【'.session('admin_username').'】登录成功', 1);
            return json(['code' => 1, 'data' => url('index/index'), 'msg' => '登录成功!']);
        }
    }
yunucms判断登陆错误次数限制

很赞哦! ()

文章评论

    emm...暂不支持评论

标签云

站点信息

  • A建站时间:2014年11月29日
  • B建站时间:2019年7月6日
  • 网站程序:帝国CMS7.5
  • 博客模板免费获取
  • 网站地图XML网站地图
  • 微信公众号:扫描二维码,加我吧

打赏本站

  • 如果你觉得本站很棒,那就很棒吧!
  • 保护隐私:不开放打赏了~