我认为你应该这样做,实施自定义org.springframework.security.web.access.AccessDeniedHandler
。每当用户尝试访问无权访问的页面时,该页面将被抛出。在handle
方法中,您收到的参数为HttpServletRequest
,您可以使用该方法对每个请求端点进行一种特定的处理。
@Override
public void handle(HttpServletRequest request, HttpServletResponse response,
AccessDeniedException accessDeniedException)
throws IOException, ServletException {
String errorPage = doSomethingWithRequestUri(request);
response.sendRedirect(errorPage);
}
但是你必须非常小心,这样如果您尝试重定向到相同的URL,用户试图进入你会爱上一个无限循环重定向。也许你应该使用授权/非授权模式,比如这个:
你可能已经想到了这一点,你已经实现了解决方案...因此,在AccessDeniedHandler
实现中,您应该注意授权/未授权的url关系
感谢Amirutha,我认为类似的解决方案可以使用spring security提供的选项卡库来实现,但它也是开发人员可以使用的东西为了使其发挥作用,我从框架的角度来看待更多,如果有一个“正确”的方法来实现这一点,那就是Spring Security推荐的方法。 –