【发布时间】:2011-05-15 06:10:06
【问题描述】:
我正在使用 Spring Security 3.0.4。我有一堆受 Spring Security 保护的 Web 服务。当我以未经身份验证的用户身份访问它们时,Spring Security 会重定向到登录页面。相反,我想返回 HTTP 403 错误。我怎样才能做到这一点?
这是我的安全配置:
<http auto-config="false" use-expressions="true" >
<intercept-url pattern="/authorization.jsp" access="permitAll"/>
<intercept-url pattern="/registration.jsp" access="permitAll"/>
<intercept-url pattern="/api/authorization/auth" access="permitAll"/>
<intercept-url pattern="/api/authorization/new" access="permitAll"/>
<intercept-url pattern="/api/accounts/new" access="permitAll"/>
<intercept-url pattern="/app/**" access="permitAll"/>
<intercept-url pattern="/extjs/**" access="permitAll"/>
<intercept-url pattern="/**" access="hasRole('ROLE_USER')" />
<form-login login-page="/authorization.jsp"
default-target-url="/index.jsp"
authentication-failure-url="/registration.jsp?login_error=1"
always-use-default-target="true"
/>
<logout logout-success-url="/authorization.jsp"
logout-url="/j_spring_security_logout"
invalidate-session="true"/>
</http>
【问题讨论】:
-
您是否尝试过删除表单登录中的“authentication-failure-url”设置?
-
您找到有效的解决方案了吗?我听说实现这一目标的方法是覆盖“一些 Spring 过滤器”,但没有示例,我认为应该可以配置,因为例如AJAX 应用程序喜欢在 JSON 通道上进行自定义登录,并且 JSON 通道的数据预计会在无服务权限时响应 403。