java校园疫情管理系统-shiro登录密码错误时bug修复

前段时间学java的时候,跟着B站老师的视频(BV1aY411c7d1)敲了一遍疫情管理项目,调试的时候发现如果密码故意输错,会卡在登陆页面持续登陆中,查询资料后发现是由于数据库会自动加密,所以导致shiro认证失败

用了诸多办法无果,本菜鸟无奈用try catch抛异常,可以暂时解决,下面是我的代码希望可以帮到跟我有同样疑惑的新手们,同时欢迎有更好的解决方案让我学习一下┭┮﹏┭┮

Controller-LoginController中

@RequestMapping("/login/login")
    @ResponseBody
    public DataView login(String username,String password,String code,HttpSession session){
        DataView dataView=new DataView();
        //1.判断验证码是否正确
        String sessionCode=(String) session.getAttribute("code");
        if (code!=null && sessionCode.equals(code)) {
            //2.session普通登录逻辑
//            User user=userService.login(username,password);
            //shiro登录
            try {
                Subject subject = SecurityUtils.getSubject();
                UsernamePasswordToken token = new UsernamePasswordToken(username, password);
                subject.login(token);
                User user = (User) subject.getPrincipal();
                //3.判断
                if (user != null) {
                    dataView.setCode(200);
                    dataView.setMsg("登陆成功!");
                    session.setAttribute("user", user);
                    return dataView;
                } }
                catch (Exception ex)  {
                    dataView.setCode(100);
                    dataView.setMsg("用户名或密码错误!");
                    return dataView;
                }
            }
        dataView.setCode(100);
        dataView.setMsg("验证码错误!");
        return dataView;
    }

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值