【发布时间】:2012-03-01 04:14:24
【问题描述】:
我有某种控制器:
@Controller
public class DefaultController {
@RequestMapping(value="/index.html", method=RequestMethod.GET)
public String indexView(){
return "index";
}
@RequestMapping(value="/some.action", method=RequestMethod.POST)
@ResponseBody
public MyObject indexView(some parametrs.... ){
MyObject o= daoService.getO(id);
return o;
}
}
我正在使用 Spring Security:
<security:global-method-security secured-annotations="enabled" />
<security:http auto-config="true" access-denied-page="/accessDenied.jsp">
<security:form-login login-page="/login.html" login-processing-url="/login" authentication-failure-url="/login.html?login_error=1" default-target-url="/"/>
<security:http-basic/>
<security:intercept-url pattern='/**' access='ROLE_USER' />
<security:logout logout-url="/logout" logout-success-url="/"/>
<security:remember-me services-ref="rememberMeServices"/>
</security:http>
现在,我的问题如下:
在没有经过身份验证的用户的情况下使用 AJAX 访问 /some.action 时,Spring Security 返回 301 命令(重定向到访问被拒绝的页面)。
我需要的是即使用户未通过身份验证返回 200 OK 并向客户端或事件发送身份验证错误消息,或者在最坏的情况下返回 400 错误。
我知道我需要创建自定义身份验证成功处理程序,但我可以这样做吗?如何将这个处理程序应用于 *.action URI?
【问题讨论】:
-
顺便说一句,401 不是返回的正确代码吗? stackoverflow.com/questions/3297048/…
-
@flurdy,是的,401 有意义。
-
这可能对byteclip.com/spring-security-post-authentication-logic有帮助,这样你就可以更改http响应代码
标签: spring jakarta-ee spring-mvc spring-security