Spring Security自定义accessDeniedHandler被忽略

时间:2016-12-21 18:58:00

标签: java spring spring-boot spring-security

我想创建一个Spring Boot应用程序,它将作为角度/移动应用程序的后端服务提供商。当用户发出不允许他/她做的请求时,用户必须得到类似“禁止”的响应"例如。 我创建了一个@EnableWebSecurity带注释的类,它覆盖了WebSecurityConfigurerAdapter.configure(HttpSecurity http)方法。我尝试过以下方法:

http
    .authorizeRequests()
    .antMatchers("/test.txt").authenticated().and().exceptionHandling()
    .accessDeniedHandler((HttpServletRequest request, HttpServletResponse response, AccessDeniedException accessDeniedException) -> {
        response.sendError(403, "forbidden");
    });

即使这样也没有用

http
    .authorizeRequests()
    .antMatchers("/test.txt").authenticated()
    .and().exceptionHandling().accessDeniedPage("/somepage");

我得到的是403响应html文本"此应用程序没有/ error的显式映射,因此您将此视为回退。出现意外错误(type = Forbidden,status = 403)。 访问被拒绝"

我已经用Google搜索了答案并建议创建一个@ControllerAdvice类来捕获AccessDeniedException,但是,首先,我已经有了@ExceptionHandler(Throwable.class)这样的类注释方法(以捕获应用程序中的所有可能的异常)并且它也不被调用,其次,我想理解为什么我的第一个方法不起作用。谢谢!

0 个答案:

没有答案