如何正确拦截REQUEST
How to intercept REQUEST correctly
我已经设置了一个拦截器 class 以将 jwt 令牌添加到请求 headers 但请求仍然没有令牌。
我已经设置了 class 并在调用 request.clone
之前放置了一个 console.log
以查看我的令牌是否真的存在。但它似乎没有传递给请求:
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 调用了这个方法。
我希望使用 header 中的令牌进行请求,但它没有通过(对不起我的英语)。
有人可以帮忙吗?
你创建了 cloned
但什么也没做。 return它。
intercept(request: HttpRequest<any>, next: HttpHandler) {
// ... yada yada yada ...
if ... {
return request.clone({ setHeaders: { Authorization: `Bearer ${currentToken}` } });
}
return next.handle(request);
}
我已经设置了一个拦截器 class 以将 jwt 令牌添加到请求 headers 但请求仍然没有令牌。
我已经设置了 class 并在调用 request.clone
之前放置了一个 console.log
以查看我的令牌是否真的存在。但它似乎没有传递给请求:
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 调用了这个方法。
我希望使用 header 中的令牌进行请求,但它没有通过(对不起我的英语)。
有人可以帮忙吗?
你创建了 cloned
但什么也没做。 return它。
intercept(request: HttpRequest<any>, next: HttpHandler) {
// ... yada yada yada ...
if ... {
return request.clone({ setHeaders: { Authorization: `Bearer ${currentToken}` } });
}
return next.handle(request);
}