存储Token
如何使用
ITokenService
接口(默认实现 TokenService
),只有四个方法及 login_url
属性:
set(data: ITokenModel): boolean
设置认证信息,同时触发change
get(): ITokenModel
获取认证信息clear()
清除认证信息,同时触发change
参数为null
change(): Observable<ITokenModel>
订阅认证信息变更回调login_url
获取登录地址,等同forRoot()
所配置的值
因此,当登录过程中后端返回相应的认证信息时,只要符合 ITokenModel
接口对象,都可以调用 set
方法将认证存储至 IStore
(默认实现 LocalStorageStore
) 当中。
constructor(@Inject(DA_SERVICE_TOKEN) service: ITokenService) {
service.set({ token: `asdf` });
service.get().token; // output: asdf
}
存储类型
默认是采用 LocalStorageStore
持久化存储,你可以在 global-config.module.ts
或根模块里变更其他存储方式。
export class GlobalConfigModule {
static forRoot(): ModuleWithProviders {
return {
ngModule: GlobalConfigModule,
providers: [
{ provide: DA_STORE_TOKEN, useClass: MemoryStore }
]
};
}
}
包含三种存储类型:
LocalStorageStore
localStorage
存储,关掉浏览器后不丢失。
SessionStorageStore
sessionStorage
存储,关掉浏览器后丢失。
MemoryStore
内存存储,关掉浏览器标签后丢失。
CookieStorageStore
Cookie 存储,需要额外安装 js-cookie 依赖,并在 angular.json
的 scripts
节点中引用 "node_modules/js-cookie/dist/js.cookie.js"
。