我们有两种登录方式。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