我正在从Spring 3.2升级到4.1并尝试更新我的MVC配置。
简短版本:我可以确认请求发送了参数:
userId:USERNAME
password:PASSWORD
termsAccepted:true
内容类型为application/x-www-form-urlencoded
。
Spring Security CSRF已停用:<security:csrf disabled="true"/>
查看XSD,它说我的自定义方法参数解析器不会覆盖默认值:
<mvc:annotation-driven >
<mvc:argument-resolvers>
<bean class="org.jason.web.util.RetainUserHandlerMethodArgumentResolver"/>
<bean class="org.jason.web.util.ConversationArgumentResolver"/>
</mvc:argument-resolvers>
<mvc:message-converters>
<bean class="org.springframework.http.converter.FormHttpMessageConverter"/>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
</mvc:message-converters>
</mvc:annotation-driven>
任何人都可以提供任何见解吗?
编辑:这是控制器。这里没什么特别的。
@RequestMapping(value = "/login**")
public ModelAndView login(@RequestParam(value = "error", required = false) String error,
@RequestParam(value = "logout", required = false) String logout,
@RequestParam(value = "submit", required = false) String submit,
@RequestParam(value = "userId", required = false) String userId,
@RequestParam(value = "password", required = false) String password,
@RequestParam(value = "returnView", required = false) String returnView,
HttpServletRequest request,
HttpSession session
) {
// login log. Return a Spring ModelAndView based on success/failure.
}
答案 0 :(得分:2)
作为升级的一部分,您还将Spring Security升级到4.1。在3.2到4.x之间,默认登录网址已更改为/j_spring_security_check
到/login
。 (见https://github.com/spring-projects/spring-security/issues/3010)。
现在,有效的Spring Security处理对/login
的请求,并且您的控制器最终会因身份验证失败而接收重定向(由于它是一个新的空请求,因此不包含原始参数)。