Angular: 为Angular SPA程序添加Authorization支持
import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
@Injectable()
export class AuthInterceptor implements HttpInterceptor {
constructor() { }
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
// 假设我们有一个可以获取认证token的方法
const token = this.getToken();
// 如果请求已经包含了一个Authorization头,我们不应该添加另一个
if (!req.headers.has('Authorization')) {
// 克隆请求并添加Authorization头
const authReq = req.clone({
headers: req.headers.set('Authorization', `Bearer ${token}`)
});
// 然后传递克隆的请求到下一个拦截器或者服务器
return next.handle(authReq);
}
// 如果请求已经有Authorization头,我们应该保持原样
return next.handle(req);
}
// 这个函数应该返回有效的认证token
private getToken(): string {
// 实现获取token的逻辑
return 'your-auth-token';
}
}
这段代码展示了如何在Angular应用中创建一个HTTP拦截器,用于在每个请求中自动添加Authorization头。这是一个标准的做法,用于确保SPA在向服务器发送请求时,总是带上必要的认证信息。
评论已关闭