您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Spring @ExceptionHandler无法捕获AccessDeniedException

Spring @ExceptionHandler无法捕获AccessDeniedException

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响应,直到用户通过浏览器界面进行身份验证为止。

Access 2022/1/1 18:23:06 有474人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶