Spring自定义访问拒绝处理程序不起作用

时间:2019-05-10 06:56:40

标签: java spring spring-security access-denied

以下情况:

我用Spring开发了一个微服务架构。因此,我已经实现了一项身份验证服务和一项用户界面服务。 会话与redis共享。因此,工作流程是您登录auth-login页面,成功后将重定向到ui资源。 到目前为止,一切都很好。我还通过用户角色实现了自动化,以确保我在控制器级别上的资源安全。

我想要的东西: 即使登录成功,也应该无法更改URL并输入限制区域。因此,当客户端尝试执行此操作时,会引发atm发生Accessdenied异常。 在那种情况下,我想使会话无效并重定向到auth服务的登录页面。

我做什么: 我遵循baeldung的this教程来实现自定义accessdeniedhandler。

代码:

  

CustomAccessDeniedHandler.java

public class CustomAccessDeniedHandler implements AccessDeniedHandler {

    @Override
    public void handle(HttpServletRequest request, HttpServletResponse response,
            AccessDeniedException accessDeniedException) throws IOException, ServletException {

      response.sendRedirect("http://localhost:8000/login");

    }
}
  

SpringSecurity.java

@Configuration
public class SpringSecurityConfiguration extends WebSecurityConfigurerAdapter{

     @Override
        protected void configure(HttpSecurity http) throws Exception {
            http.authorizeRequests().anyRequest().authenticated();
            http.exceptionHandling().accessDeniedHandler(accessDeniedHandler());

        }

     @Bean
     public AccessDeniedHandler accessDeniedHandler(){
         return new CustomAccessDeniedHandler();
     }

}

会发生什么: 我在处理程序中设置了一个断点,但未抛出该断点,并且抛出了一般的accessdenied消息。在执行过程中我忘记注册了吗?

谢谢你们

0 个答案:

没有答案