Spring Security的请求处理全部在调用分派器servlet之前在过滤器链中进行,因此它对Spring
MVC异常处理程序一无所知,并且实际上完全可以在没有Spring MVC的情况下使用。
您看到的是未经身份验证的用户的预期行为,但是您不希望将Ajax调用重定向到UI代码。很难确切地说出最佳解决方案是什么,因为对于未经身份验证的ajax调用,您想要的行为并不明显。例如,如果您希望它们仅因403失败,则可以将ajax
api分成单独的过滤器链。例如,如果要进行ajax调用,则
/ajaxapi可以在现有的链定义之前添加以下链定义:
<http pattern="/ajaxapi/**" create-session="never" use-expressions="true" entry-point-ref="entryPoint"> <intercept-url pattern="/**" access="isAuthenticated()" /></http><bean entryPoint="org.springframework.security.web.authentication.Http403ForbiddenEntryPoint" />
然后,ajax调用将只获得403响应,直到用户通过浏览器界面进行身份验证为止。



