私はSpring Securityバージョン3.1.2を使用しています。Springセキュリティ:複数のセキュリティコンテキストが間違った認証失敗を返します。-url
<http pattern="/embedded/**" auto-config="true" use-expressions="true" access-denied-page="/embedded/login.htm">
<intercept-url pattern="/embedded/login-embedded.html" access="hasRole('ROLE_AUTHENTICATED')"/>
<intercept-url pattern="/embedded/**" access="permitAll"/>
<form-login login-page="/embedded/login.htm"
authentication-failure-url="/embedded/login.htm?error=true"
default-target-url="/embedded/login-embedded.html" />
<logout logout-success-url="/embedded/index.html"/>
</http>
<http auto-config="true" use-expressions="true" access-denied-page="/login.htm">
<intercept-url pattern="/login-success.html" access="hasRole('ROLE_AUTHENTICATED')"/>
<intercept-url pattern="/**" access="permitAll"/>
<form-login login-page="/login.htm"
authentication-failure-url="/login.htm?error=true"
default-target-url="/login-success.html"/>
<logout logout-success-url="/index.html"/>
</http>
Iはキャプチャを検証するサービスを呼び出しスプリングMVCコントローラにデータをポスト:ここ
、構成です。それが合格すると、それはj_spring_security_check
RequestDispatcherに転送されます。ここで
は、コントローラの関連する部分である:
@RequestMapping(value ="/embedded/login.htm", method = RequestMethod.POST)
public String authenticateCaptcha(HttpServletRequest request,
HttpServletResponse response,
@RequestParam String verificationText) throws IOException, ServletException {
HttpSession session = request.getSession();
String sessionId = session.getId();
if (captchaService.validate(sessionId, verificationText)) {
request.getRequestDispatcher("/j_spring_security_check").forward(request, response);
return null;
}
return buildErrorRedirect(request);
}
私の問題は、キャプチャが検証され、要求が春のセキュリティに転送され、認証が失敗した後、それが転送エラーページが/login.htm?error=true
の代わりであるということです/embedded/login.htm?error=true
。
ありがとうございました。最初のリンクは多くの助けになりました。 'form-login'の' login-processing-url'を設定すると、私の問題が分類されました。 –