bixi
Version:
企业级中后台前端解决方案
34 lines (31 loc) • 1.04 kB
text/typescript
import { HttpRequest } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { BixiAuthConfig } from '../../config.type';
import { BaseInterceptor } from '../base.interceptor';
import { CheckJwt } from '../helper';
import { BIXI_SERVICE_TOKEN } from '../interface';
import { JWTTokenModel } from './jwt.model';
/**
* JWT 拦截器
*
* ```
* // app.module.ts
* { provide: HTTP_INTERCEPTORS, useClass: JWTInterceptor, multi: true}
* ```
*/
()
export class JWTInterceptor extends BaseInterceptor {
isAuth(options: BixiAuthConfig): boolean {
this.model = this.injector.get(BIXI_SERVICE_TOKEN).get<JWTTokenModel>(JWTTokenModel);
// tslint:disable-next-line:no-non-null-assertion
return CheckJwt(this.model as JWTTokenModel, options.token_exp_offset!);
}
// tslint:disable-next-line:no-any
setReq(req: HttpRequest<any>, _options: BixiAuthConfig): HttpRequest<any> {
return req.clone({
setHeaders: {
Authorization: `Bearer ${ this.model.token }`
}
});
}
}