Angular 角度4拦截器,带ngx重新三角形
我用的是Angular 4 我想截获请求,如果http状态码是403,我想将用户重定向到登录页面 现在我在我的Angular 角度4拦截器,带ngx重新三角形,angular,restangular,Angular,Restangular,我用的是Angular 4 我想截获请求,如果http状态码是403,我想将用户重定向到登录页面 现在我在我的app.module.ts /** * NGX-ANGULAR configs. */ // Function for setting the default restangular configuration export function RestangularConfigFactory (RestangularProvider) { // Set base URL R
app.module.ts
/**
* NGX-ANGULAR configs.
*/
// Function for setting the default restangular configuration
export function RestangularConfigFactory (RestangularProvider) {
// Set base URL
RestangularProvider.setBaseUrl('http://192.168.1.79:8080/api/');
// If token not valid/expired
RestangularProvider.addErrorInterceptor((response, subject, responseHandler) => {
if (response.status === 403) {
// Redirect user to login page
//Router.navigateByUrl(['login']);
return false; // error handled
}
return true; // error not handled
});
}
Router.navigateByUrl(['login'])代码>显然不起作用
我试图从@angular/Router
导入路由器
,并将其注入AppModule构造函数,但无法访问内的此
重新启动配置工厂
功能
有人能帮忙吗
谢谢。我在试图解决同样的问题时遇到了你的问题,我想我会与你(以及其他任何人)分享我的解决方案
在导入
中设置重启模块
时,可以指定要传递到配置工厂的任何其他服务。就我而言,我已经通过了身份验证服务:
export function restangularConfigFactory(restangularProvider, auth) {
// set base url and add token to all requests
...
}
@NgModule({
...
imports: [
...
RestangularModule.forRoot([AuthService], restangularConfigFactory)
],
...
})
因此,我所要做的就是将Router
添加到我的函数参数和服务列表中,就像这样(不要忘记import{Router}from'@angular/Router';
):
然后我可以像在其他任何地方一样使用路由器
:
export function restangularConfigFactory(restangularProvider, auth, router) {
...
restangularProvider.addErrorInterceptor((response, subject, responseHandler) => {
if (response.status == 403) {
router.navigate(['login']);
return false;
}
else {
return true;
}
});
...
}
export function restangularConfigFactory(restangularProvider, auth, router) {
...
restangularProvider.addErrorInterceptor((response, subject, responseHandler) => {
if (response.status == 403) {
router.navigate(['login']);
return false;
}
else {
return true;
}
});
...
}