j_uasername& j_password在Spring 3.2.5.RELEASE中不再使用?

时间:2014-09-04 07:14:50

标签: java spring spring-security

Spring security中是否不再使用这些拖动请求参数?我正在学习Spring Security,整整一天我都在努力学习一个简单的登录表单。当我提交默认/ j_spring_security_check时,它似乎也不再是默认值,我被重定向到login?error页面,所以我决定在检查表单参数和所有内容后看到发生了什么别的还好。我将表单提交到自定义控制器,然后我就可以阅读j_usernamej_password参数了。然后我决定看看在Spring负责身份验证的过滤器中发生了什么

org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter

 public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException {
        if (postOnly && !request.getMethod().equals("POST")) {
            throw new AuthenticationServiceException("Authentication method not supported: " + request.getMethod());
        }

        String username = obtainUsername(request);
        String password = obtainPassword(request);

        if (username == null) {
            username = "";
        }

        if (password == null) {
            password = "";
        }

        username = username.trim();

        UsernamePasswordAuthenticationToken authRequest = new UsernamePasswordAuthenticationToken(username, password);

        // Allow subclasses to set the "details" property
        setDetails(request, authRequest);

        return this.getAuthenticationManager().authenticate(authRequest);
    }

我把断点检查参数并且它们是空的!然后我检查了obtainUsername /密码方法

  protected String obtainUsername(HttpServletRequest request) {
        return request.getParameter(usernameParameter);
    }

usernameParameterpasswordParameterusername& password,而不是j_username& j_password

enter image description here

这是我的pom.xml

1 个答案:

答案 0 :(得分:2)

由于您在查看该课程时,您还应该能够看到默认值为j_usernamej_password。但是,也可以覆盖它们,这取决于您如何配置应用程序。

如果您使用过Java配置,则会override the defaults

您应该从一个工作样本开始,而不是努力从头开始构建某些东西。 Spring Security源代码树中有很多样本。例如,以下是其中一个login form,您可以在其中轻松查看使用的不同参数名称。