我已经建立了一个拦截器类,将jwt令牌添加到请求标头中,但是请求仍然没有令牌。
我已经建立了该类,并在调用console.log
之前放置了request.clone
,以查看我的令牌是否真的存在。但似乎它没有传递给请求:
export class JwtInterceptor implements HttpInterceptor {
constructor(private authenticationService: AuthenticationService) { }
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
// add authorization header with jwt token if available
let currentUser = this.authenticationService.currentUserValue;
let currentToken = this.authenticationService.currentTokenValue;
if (currentUser && currentToken) {
console.log(currentToken);
const cloned = request.clone({
setHeaders: {
Authorization: `Bearer ${currentToken}`
}
});
}
return next.handle(request);
}
}
console.log
显示令牌。
我的服务功能:
export class UserService {
constructor(private http: HttpClient) { }
getAll() {
return this.http.get<User[]>(`${environment.apiUrl}/users`);
}
}
在成功记录后发出请求。我重定向到主页,然后ngInit调用此方法。
我希望使用标头中的令牌来进行请求,但该请求没有通过(对不起,我的英语)。
有人可以帮忙吗?
答案 0 :(得分:1)
您创建了cloned
,但没有执行任何操作。退回它。
intercept(request: HttpRequest<any>, next: HttpHandler) {
// ... yada yada yada ...
if ... {
return request.clone({ setHeaders: { Authorization: `Bearer ${currentToken}` } });
}
return next.handle(request);
}