1
我有一个登录表单以前看起来像下面POST不支持
<div class="span-10 last">
<c:url value="/j_spring_security_check" var="loginActionUrl" />
<user:login actionNameKey="login.login" action="${loginActionUrl}"/>
</div>
,但现在我改变了形式看起来像下面。
<div class="span-10 last">
<c:url value="/login/loginNow" var="loginActionUrl" />
<user:login actionNameKey="login.login" action="${loginActionUrl}"/>
</div>
我的控制器看起来像现在这样
@Controller
@RequestMapping(value = "/login")
public class LoginPageController {
@RequestMapping(value = "/loginNow", method = RequestMethod.POST)
public String doLogin(
@RequestHeader(value = "referer", required = false) final String referer,
@Valid final LoginForm loginForm, final BindingResult bindingResult,
final Model model, final HttpServletRequest request,
final HttpServletResponse response) throws CMSItemNotFoundException {
if (somethingMissing) {
return to login page.
}
return FORWARD_PREFIX + "/j_spring_security_check";
}
}
但不支持现在我收到请求POST方法。我不知道为什么..?我怎样才能纠正错误.. 感谢
你确认你的JSP调用正确的控制器方法?使用FF萤火(或同等)看页面的击球URL。请问如果更改接受GET和自行测试URL的方式工作?最后,如果您正在使用Tomcat尝试删除工作目录和重启动Tomcat的 - 有时它使类文件的旧版本中存在导致奇怪的行为。 – nickdos
是的,我已经把日志行..我很确定它转到正确的控制器。我从这个网址得到的是你已经把 FORWARD 在 springSecurityFilterChain过滤器名称>从您的controller.But转发它现在它的转发控制器与j_spring_security_check但不知何故,表单对象是失去了在转发技术,所以我即使凭据正确,也可以再次登录登录页面。所以我只是model.addAttribute(loginForm);然后将其转发给j_spring_security_check。现在 –
我测试它,我不知道应该怎么办了request.setAttribute(“为j_username”,form.getUsername())类似的东西在转发之前j_spring_security_check。 –