zoukankan      html  css  js  c++  java
  • spring security抛出AuthenticationException异常的原因

    可能是因为密码不正确,特别是密码使用md5或者其它的加密算法加密之后,更是如此。

    还有一点:

    在UsernamePasswordAuthenticationFilter的子类中的attemptAuthentication方法中,只要去验证你自己的逻辑就可以了,不要在这里验证用户名,密码是否正确,因为这是UserDetailsService要干的事情。

    比如我的attemptAuthentication方法中就是这样:

        @Override
        public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException {
               if (!request.getMethod().equals("POST")) {  
                    throw new AuthenticationServiceException("Authentication method not supported: " + request.getMethod());  
                }  
                //检测验证码  
                checkValidateCode(request); 
                String username = obtainUsername(request);  
                String password = obtainPassword(request);  
                
                //为了辨别从前台进入的,还是从后台进入的
                String type=request.getParameter(ENTRY);
                request.getSession().setAttribute(USER_ENTRY, type);
                if("bg".equals(type))
                {
                    username="bg_"+username;
                }else if("fg".equals(type))
                {
                    username="fg_"+username;
                }
                
                  
                //这里的username会传给UserDetailsService的loadUserByUsername方法,作为loadUserByUsername的参数。
                UsernamePasswordAuthenticationToken authRequest = new UsernamePasswordAuthenticationToken(username, password);  
                  
                // 允许子类设置详细属性  
                setDetails(request, authRequest);  
                  
                // 运行UserDetailsService的loadUserByUsername 再次封装Authentication  
                AuthenticationManager authenticationManager = this.getAuthenticationManager();
                Authentication authentication=authenticationManager.authenticate(authRequest);
                return authentication;  
        }
  • 相关阅读:
    Clipper库中文文档详解
    JavaScript-Clipper.js
    安装Scrapy遇到的问题
    Python中if __name__ == '__main__'的使用
    写出一段Python代码实现删除一个list里面的重复元素
    Python 内置函数(反射类)
    Python 内置函数(集合操作,IO操作)
    Python 内置函数(数学运算类,逻辑判断类)
    Python 推导式(列表推导式,字典推导式,集合推导式)
    Python 闭包和装饰器
  • 原文地址:https://www.cnblogs.com/passer1991/p/3457787.html
Copyright © 2011-2022 走看看