我在我的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");
}
但它不起作用。