我正在实现身份验证,我正在使用拦截器来执行此操作。但是,我遇到了错误。
“该请求的授权已被拒绝。”
下面是拦截器代码。
@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);
}
}
所以我可以向邮递员发出请求,并返回正确的数据。
这样您就可以看到完整的错误:
ERROR错误:未捕获(承诺):HttpErrorResponse: {“ headers”:{“ normalizedNames”:{},“ lazyUpdate”:null},“ status”:401,“ statusText”:“未经授权”,“ url”:“ http://localhost/Invoicing/api/users/settings/getTableColumns/leads-list”,“确定”: false,“名称”:“ HttpErrorResponse”,“消息”:“ Http 的故障响应 http://localhost/Invoicing/api/users/settings/getTableColumns/leads-list: 401未经授权”,“错误”:{“消息”:“授权已被拒绝 为此请求。“}} 在resolvePromise(zone.js:814) 在resolvePromise(zone.js:771) 在zone.js:873 在ZoneDelegate.push ../ node_modules / zone.js / dist / zone.js.ZoneDelegate.invokeTask (zone.js:421) 在Object.onInvokeTask(core.js:16147) 在ZoneDelegate.push ../ node_modules / zone.js / dist / zone.js.ZoneDelegate.invokeTask (zone.js:420) 在Zone.push ../ node_modules / zone.js / dist / zone.js.Zone.runTask(zone.js:188) 在rainMicroTaskQueue(zone.js:595) 在ZoneTask.push ../ node_modules / zone.js / dist / zone.js.ZoneTask.invokeTask中 [作为调用](zone.js:500) 在invokeTask(zone.js:1540)
我这里缺少什么吗?
答案 0 :(得分:0)
我已解决了该问题,即我已将拦截器添加到app.module.ts
,并且需要将其添加到使用该服务的服务所在的每个模块中。
希望这对其他人有帮助。