存储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) 当中。

  1. constructor(@Inject(DA_SERVICE_TOKEN) service: ITokenService) {
  2. service.set({ token: `asdf` });
  3. service.get().token; // output: asdf
  4. }

存储类型

默认是采用 LocalStorageStore 持久化存储,你可以在 global-config.module.ts 或根模块里变更其他存储方式。

  1. export class GlobalConfigModule {
  2. static forRoot(): ModuleWithProviders {
  3. return {
  4. ngModule: GlobalConfigModule,
  5. providers: [
  6. { provide: DA_STORE_TOKEN, useClass: MemoryStore }
  7. ]
  8. };
  9. }
  10. }

包含三种存储类型:

LocalStorageStore

localStorage 存储,关掉浏览器后不丢失

SessionStorageStore

sessionStorage 存储,关掉浏览器后丢失

MemoryStore

内存存储,关掉浏览器标签后丢失

CookieStorageStore

Cookie 存储,需要额外安装 js-cookie 依赖,并在 angular.jsonscripts 节点中引用 "node_modules/js-cookie/dist/js.cookie.js"