zoukankan      html  css  js  c++  java
  • shiro登陆认证

    1.LoginController

    @RequestMapping(method = RequestMethod.POST)
    public String login(User user, HttpServletRequest request) {
        try {
            ubject subject = SecurityUtils.getSubject();
             UsernamePasswordToken token = new UsernamePasswordToken(user.getLoginName(), user.getPassword());
            token.setRememberMe(true);
            String vcode = request.getParameter("verifyCode");
            String verifyCode = subject.getSession().getAttribute(Global.SESSION_SECURITY_CODE).toString();
    
            if (vcode.equals(verifyCode)) {
                subject.login(token); //启动认证
            }
        } catch (Exception e) {
            e.printStackTrace();
            return "modules/sys/sysLogin";
        }
        return "redirect:index";
    }            

    2.AuthenticationInfo

        @Override
        protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authcToken) {
            // 令牌——基于用户名和密码的令牌
            UsernamePasswordToken token = (UsernamePasswordToken) authcToken;
    
            // 令牌中可以取出用户名
            String username = token.getUsername();
            String password = String.valueOf(token.getPassword());
    
            // 让shiro框架去验证账号密码
            if (!StringUtils.isEmpty(username)) {
    
                User record = new User();
                record.setLoginName(username);
                
                User user = userService.queryOne(record);
                
                if (null != user) {
                    String pwdEncrypt = CipherUtil.createPwdEncrypt(password, username);
                    if (user.getPassword().equals(pwdEncrypt)) {
                        AuthenticationInfo info = new SimpleAuthenticationInfo(user.getLoginName(), password,
                                getName());
                        if (info != null) {
                            UserUtils.setSession(Global.SESSION_USER, user);
                        }
                        return info;
                    } else {
                        throw new IncorrectCredentialsException(); /* 错误认证异常 */
                    }
                } else {
                    throw new UnknownAccountException(); /* 找不到帐号异常 */
                }
            } else {
                throw new AuthenticationException();
            }
        }
  • 相关阅读:
    20200721_34代码如何优化以及框架的运用和构建设计
    20200719_33appium应用及H5页面元素定位下
    20200709_29多线程与分布式
    day4_day4_python
    python_day3
    python第二天
    pytihon初学第一天
    移动平均线系列
    网页爬取
    十种经典排序算法
  • 原文地址:https://www.cnblogs.com/fangts/p/7392434.html
Copyright © 2011-2022 走看看