Spring security
中是否不再使用这些拖动请求参数?我正在学习Spring Security,整整一天我都在努力学习一个简单的登录表单。当我提交默认/ j_spring_security_check时,它似乎也不再是默认值,我被重定向到login?error
页面,所以我决定在检查表单参数和所有内容后看到发生了什么别的还好。我将表单提交到自定义控制器,然后我就可以阅读j_username
和j_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);
}
usernameParameter
和passwordParameter
为username
& password
,而不是j_username
& j_password
这是我的pom.xml
答案 0 :(得分:2)
由于您在查看该课程时,您还应该能够看到默认值为j_username
和j_password
。但是,也可以覆盖它们,这取决于您如何配置应用程序。
如果您使用过Java配置,则会override the defaults。
您应该从一个工作样本开始,而不是努力从头开始构建某些东西。 Spring Security源代码树中有很多样本。例如,以下是其中一个login form,您可以在其中轻松查看使用的不同参数名称。