我正在努力实现身份验证我正在使用拦截器来执行此操作。但是,我收到了一个错误。
“此请求已被拒绝授权。”
下面是拦截器代码。
@Injectable()
export class AuthenticationInterceptor implements HttpInterceptor{
constructor(@Inject('IAuthService') private authService:IAuthService) {
}
intercept(req: HttpRequest<any>, next: HttpHandler):
Observable<HttpEvent<any>> {
if(this.authService.isLoggedIn){
req = req.clone({
headers: req.headers.set('Authorization', `Bearer ${this.authService.token}`)
});
}
return next.handle(req);
}
}
所以我可以从Postman发出请求并返回正确的数据。
这样你就可以看到完整的错误:
错误:未捕获(在承诺中):HttpErrorResponse:{“headers”:{“normalizedNames”:{},“lazyUpdate”:null},“status”:401,“statusText”:“未经授权”,“url”:“ http://localhost/Invoicing/api/users/settings/getTableColumns/leads-list“,”ok“:false,”name“:”HttpErrorResponse“,”message“:”http://localhost/Invoicing/api/users/settings/getTableColumns/leads-list的Http失败响应:401 Unauthorized“,”error“:{”message“:”此请求的授权被拒绝。 “}} at resolvePromise(zone.js:814)at zonePrise(zone.js:771)at zone.js:873 at ZoneDelegate.push ../ node_modules / zone.js / dist / zone.js.ZoneDelegate.invokeTask( zone.js:421)位于Zone.push的ZoneDelegate.push ../ node_modules / zone.js / dist / zone.js.ZoneDelegate.invokeTask(zone.js:420)的Object.onInvokeTask(core.js:16147)在ZoneTask.push ../ node_modules / zone.js / dist / zone的drainMicroTaskQueue(zone.js:595)中的../node_modules/zone.js/dist/zone.js.Zone.runTask(zone.js:188) invokeTask中的.js.ZoneTask.invokeTask [as invoke](zone.js:500)(zone.js:1540)
这里有什么我想念的吗?
我已经解决了这个问题,即我已经将拦截器添加到app.module.ts
,我需要将它添加到使用它的服务所在的每个模块中。
我希望这有助于其他人。