如何在intercept-url中发送特定响应?

时间:2014-01-16 22:57:04

标签: spring-security

我是春天新手。我们正在为我们的客户构建一个移动应用程序。移动应用程序将与我们的休息服务进行交互。但最初,用户应该登录移动应用程序,然后才能访问其他服务。

我已经构建了一个Login服务,它将使用ldap验证用户凭据并创建会话,并且可以使用对其他服务的后续请求。 但是,如果匿名请求服务,则需要返回特定的响应对象。

目前,配置如下,我可以返回响应代码403.

<beans:bean id="preAuthenticatedProcessingFilterEntryPoint"
    class="org.springframework.security.web.authentication.Http403ForbiddenEntryPoint" />

 <security:http  use-expressions="true" entry-point-ref="preAuthenticatedProcessingFilterEntryPoint"> 
    <security:intercept-url pattern="/scheduling/**" access="isAuthenticated()" />
</security:http>

但是在响应正文中回复错误消息需要什么。 我尝试在EntryPoints中实现重定向url。但我不满意,因为请求不应该被重定向。

我有一个默认错误响应,如果匿名用户尝试访问服务,我需要实现它

<ErrorInfo>
     <message>Access Denied</message>
     <status>403</status>
     <url>requested URL</url>
</ErrorInfo>

1 个答案:

答案 0 :(得分:0)

如果我做对了,你想调整当前未经身份验证访问时返回的响应。在这种情况下,您需要实现并注册自己的AuthenticationEntryPoint或扩展当前使用的Http403ForbiddenEntryPoint并覆盖commence方法以返回包含所需主体的响应。

<beans:bean id="yourCustomEntryPoint" class="com.example.YourCustomEntryPoint" />

<security:http  use-expressions="true" entry-point-ref="yourCustomEntryPoint"> 
    <security:intercept-url pattern="/scheduling/**" access="isAuthenticated()" />
</security:http>