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" />