gpt4 book ai didi

java - AngularJS 显示 403 http 错误代码的自定义错误消息/页面

转载 作者:行者123 更新时间:2023-12-01 21:39:25 26 4
gpt4 key购买 nike

在 AngularJS Web 应用程序中,如何显示 403 http 响应的自定义错误消息/页面。

我使用 Spring security 并检查用户是否具有适当的 Angular 色..如果他没有该 Angular 色,应用程序将返回 http 错误代码 403。

目前在这种情况下我没有显示任何错误消息/页面。并愿意实现这一点。我们怎样才能做到这一点?

Spring启动java代码

        http.httpBasic()
.and()
.authorizeRequests()

// Permit these resources
.antMatchers("/login", "/4_security/login.html", "/bower_components/**", "/4_security/*.js", "/")
.permitAll()

// URL based Authorization control
.antMatchers("/1_reportingEntities/*.html").hasAnyAuthority(authorities)

// All other requests needs authentication
.anyRequest().authenticated()

// Access denied page (403 error)
.and().exceptionHandling().accessDeniedPage("/0_common/accessDenied.html")

.and()
// CSRF protection
.csrf().csrfTokenRepository(csrfTokenRepository()).and().addFilterAfter(csrfHeaderFilter(), CsrfFilter.class);

最佳答案

首先,您可以使用http拦截器来拦截所有响应。

然后,如果您使用 ui-router,您可以创建一个单独的未授权状态(使用 apt view 和 Controller )并在 403 上转换到该状态,如下所示

.factory('authHttpResponseInterceptor',['$q','$location','$injector',function($q,$location, $injector){
return {
responseError: function(rejection) {

if (rejection.status === 403) {
console.error("Response 403 in interceptor");
$injector.get('$state').go('unauthorised');
}

return $q.reject(rejection);
}

PS:我们不能在拦截器中注入(inject) $state,因为这会导致循环依赖。所以使用$injector。更多关于此here

关于java - AngularJS 显示 403 http 错误代码的自定义错误消息/页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36625095/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com