SpringBoot + AngularJS + SpringSecurity - 处理AccessDeniedException

时间:2015-06-08 12:30:10

标签: angularjs spring-security spring-boot

我在我的Web应用程序中使用SpringBoot和AngularJS,我不知道如何自定义默认的AccessDeniedException。

¿问题是什么?

当我尝试访问我没有正确授权的网址时,它只是将我重定向到主页,该网页显示它试图重新加载整个页面或类似的东西,因为它看起来不像它只需加载ng-view。

同样在Chrome控制台中出现此警告:

  

“主线程上的同步XMLHttpRequest已弃用,因为   其对最终用户体验的不利影响。更多   帮助,检查http://xhr.spec.whatwg.org/。“

¿我想要什么?

我想将该错误映射到此RequestMapping

@RequestMapping("template401")
public String template401()
{
    return "401 :: templateAngular";
}

路由类

我将展示我的路由类(Angular / Spring),之后我会解释我尝试解决问题的方法。

我的路线看起来像这样

app.config(function ($routeProvider, $locationProvider) { 
  $routeProvider 
    .when('/', { 
      controller: 'HomeController', 
      templateUrl: 'templateInicio'
    }) 
    .when('/gestionUsuarios',{
      controller: 'GestionUsuariosController', 
      templateUrl: 'templateGestionUsuarios'
    });
}

我的RequestMappings就像这样

@RequestMapping("templateInicio")
public String templateInicio()
{
    return "inicio :: templateAngular";
}
@PreAuthorize("hasRole('ADMIN')")
@RequestMapping("templateGestionUsuarios")
public String templateGestionUsuarios()
{   
return "gestionUsuarios :: templateAngular";
}

我尝试了什么

我曾尝试在SecurityConfig类中添加错误处理程序页面

@Override
    protected void configure(HttpSecurity http) throws Exception {
        http.csrf().disable().authorizeRequests().anyRequest().permitAll().and().formLogin()
                .loginPage("/login").defaultSuccessUrl("/login/identificar").usernameParameter("id").permitAll()
                .and()
                 .logout().permitAll().and().exceptionHandling().accessDeniedPage("/template401");

    }

但它不起作用。

0 个答案:

没有答案