gpt4 book ai didi

angular - 使用 Angular Service Worker 发送 JWT token

转载 作者:行者123 更新时间:2023-12-05 07:24:41 27 4
gpt4 key购买 nike

对于我正在开发的 Angular 7 应用程序,我使用 HttpInterceptor 随每个请求发送 token 。它看起来像这样:

export class JwtInterceptor implements HttpInterceptor {
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
let currentUser = JSON.parse(localStorage.getItem('currentUser'));
if (currentUser && currentUser.token) {
request = request.clone({
setHeaders: {
Authorization: `Bearer ${currentUser.token}`
}
});
}
return next.handle(request);
}

为了将这个应用程序变成一个渐进式网络应用程序,我使用了@angular/service-worker 和@angular/pwa。我认为配置并不难,所以它看起来应该可以工作。但问题是我找不到一种方法来增强这个工作人员,总是在每个请求中发送 token 。我知道 localstorage 在 worker 中不可用,但这不是现在的问题。我首先需要找到一种像 HttpInterceptor 现在工作的方式。这个问题有标准的解决方案吗?

最佳答案

我正在使用 angular 7 并以这种方式编写拦截器。

    import { Injectable } from '@angular/core';
import {
HttpInterceptor,
HttpRequest,
HttpResponse,
HttpHandler,
HttpEvent,
HttpErrorResponse
} from '@angular/common/http';

import { Observable, throwError } from 'rxjs';
import { map, catchError } from 'rxjs/operators';

@Injectable()
export class HttpConfigInterceptor implements HttpInterceptor {

constructor() { }

intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
var token = localStorage.getItem('token');
if (token) {
request = request.clone({ headers: request.headers.set('Authorization', 'Bearer ' + token) });
}

if (!request.headers.has('Content-Type')) {
request = request.clone({ headers: request.headers.set('Content-Type', 'application/json') });
}
request = request.clone({ headers: request.headers.set('Accept', 'application/json') });


return next.handle(request).pipe(
map((event: HttpEvent<any>) => {
if (event instanceof HttpResponse) {
console.log('event--->>>', event);
}
return event;
}),
catchError((error: HttpErrorResponse) => {
let data = {};
data = {
reason: error && error.error.reason ? error.error.reason : '',
status: error.status
};
return throwError(error);
}));
}

关于angular - 使用 Angular Service Worker 发送 JWT token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55217682/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com