TokenService
https://github.com/ng-alain/delon/blob/master/packages/auth/src/token/token.service.ts
set(data: ITokenModel): boolean {
const res = this.store.set(this._options.store_key!, data);
this.change$.next(data);
return res;
}
ITokenModel: https://github.com/ng-alain/delon/blob/master/packages/auth/src/token/interface.ts
export interface ITokenModel {
[key: string]: any;
token: string | null | undefined;
/**
* 过期时间,单位:ms
* - 不管Simple、JWT模式都必须指定
*/
expired?: number;
}
SimpleGuard:
https://github.com/ng-alain/delon/blob/master/packages/auth/src/token/simple/simple.guard.ts
注入了 TokenService
@Injectable({ providedIn: 'root' })
export class SimpleGuard implements CanActivate, CanActivateChild, CanLoad {
private url?: string;
private get cog(): AlainAuthConfig {
return this.srv.options;
}
constructor(@Inject(DA_SERVICE_TOKEN) private srv: ITokenService, private injector: Injector) {}
private process(): boolean {
const res = CheckSimple(this.srv.get() as SimpleTokenModel);
if (!res) {
ToLogin(this.cog, this.injector, this.url);
}
return res;
}
// lazy loading
canLoad(route: Route, _segments: UrlSegment[]): boolean {
this.url = route.path;
return this.process();
}
// all children route
canActivateChild(_childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
this.url = state.url;
return this.process();
}
// route
canActivate(_route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
this.url = state.url;
return this.process();
}
}
在默认的 src\app\routes\routes-routing.module.ts 中使用了 SimpleGuard 来检查用户是否已经登录。
const routes: Routes = [
{
path: '',
component: LayoutBasicComponent,
canActivate: [startPageGuard, SimpleGuard],
canActivateChild: [SimpleGuard],
JWTGuard
https://github.com/ng-alain/delon/blob/master/packages/auth/src/token/jwt/jwt.guard.ts
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2008-03-17 wf工作流 请求的性能计数器不是自定义计数器,它必须初始化为 ReadOnly 问题处理