Angular是一个流行的前端框架,用于构建单页面应用程序。JSON Web Tokens(JWT)是一种用于验证和授权的开放标准。
要在Angular应用程序中使用JSON Web Tokens,需要进行以下步骤:
安装相关依赖:
在Angular项目的根目录下运行以下命令来安装@auth0/angular-jwt
库:
npm install @auth0/angular-jwt
创建一个jwt.interceptor.ts
文件来实现一个拦截器,该拦截器将在每个HTTP请求中添加JWT令牌:
import { Injectable } from '@angular/core';
import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';
import { Observable } from 'rxjs';
import { JwtHelperService } from '@auth0/angular-jwt';
@Injectable()
export class JwtInterceptor implements HttpInterceptor {
constructor(private jwtHelper: JwtHelperService) { }
intercept(request: HttpRequest, next: HttpHandler): Observable> {
// 获取JWT令牌
const token = localStorage.getItem('token');
// 判断JWT令牌是否过期
if (token && !this.jwtHelper.isTokenExpired(token)) {
// 将JWT令牌添加到请求头中
request = request.clone({
setHeaders: {
Authorization: `Bearer ${token}`
}
});
}
return next.handle(request);
}
}
app.module.ts
文件中注册该拦截器:import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
import { JwtModule, JwtHelperService } from '@auth0/angular-jwt';
import { AppComponent } from './app.component';
import { JwtInterceptor } from './jwt.interceptor';
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
HttpClientModule,
JwtModule.forRoot({
config: {
tokenGetter: () => {
return localStorage.getItem('token');
}
}
})
],
providers: [
JwtHelperService,
{
provide: HTTP_INTERCEPTORS,
useClass: JwtInterceptor,
multi: true
}
],
bootstrap: [AppComponent]
})
export class AppModule { }
HttpClient
并发送HTTP请求:import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
@Injectable()
export class MyService {
constructor(private http: HttpClient) { }
getData() {
return this.http.get('/api/data');
}
}
请注意,上述代码示例仅涵盖了如何将JWT令牌添加到请求中。在实际应用中,您还需要处理JWT令牌的验证和刷新等方面。