我們有兩種登錄方式。Spring Security:如果認證失敗,重定向到登錄頁面
當用戶名和密碼都在請求頭,如果它的錯,我所示的HTTP狀態401 - 身份驗證失敗:錯誤的憑據頁。
如何在顯示身份驗證失敗的情況下顯示登錄頁面。
下面是在security.xml文件的代碼
<http auto-config="true" use-expressions="true">
<access-denied-handler error-page="/login.jsp"/>
<intercept-url pattern="/*Login*" access="hasRole('ROLE_ANONYMOUS')"/>
<intercept-url pattern="/*" access="hasRole('ROLE_USER') or hasRole('ROLE_ADMIN')"/>
<custom-filter ref="requestHeaderFilter" before="FORM_LOGIN_FILTER"/>
<form-login login-page="/login.jsp"/>
</http>
請讓我知道如果你需要更多的信息。
編輯:添加RequestHeader濾波器的代碼在我的申請
public class RequestHeaderProcessingFilter extends AbstractAuthenticationProcessingFilter{
private String usernameHeader = "j_username";
private String passwordHeader = "j_password";
protected RequestHeaderProcessingFilter() {
super("/login_direct");
}
//getters and setters
@Override
public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException, IOException, ServletException {
String username = request.getHeader(usernameHeader);
String password = request.getHeader(passwordHeader);
SignedUsernamePasswordAuthenticationToken authRequest =
new SignedUsernamePasswordAuthenticationToken(username, password);
return this.getAuthenticationManager().authenticate(authRequest);
}
}
嗨Raghuram,謝謝。我應該在哪裏配置defaultFailureUrl?我必須插入它,在我上面提供的代碼中? – vinoth 2011-03-28 13:01:34
@vinoth。它取決於'requestHeaderFilter'實現的實現。答案中提到的類顯示了這樣做的一種方法 – Raghuram 2011-03-28 13:14:17
嗨,我已經添加了requestHeaderFilter的實現。我們應該改變嗎? – vinoth 2011-03-28 13:21:53