bixi
Version:
企业级中后台前端解决方案
64 lines (44 loc) • 1.69 kB
Markdown
---
order: 15
title: 存储Token
type: Documents
---
## 如何使用
`ITokenService` 接口(默认实现 `TokenService`),只有四个方法及 `login_url` 属性:
- `set(data: ITokenModel): boolean` 设置认证信息,同时触发 `change`
- `get(): ITokenModel` 获取认证信息
- `clear()` 清除认证信息,同时触发 `change` 参数为 `null`
- `change(): Observable<ITokenModel>` 订阅认证信息变更回调
- `login_url` 获取登录地址,等同 `forRoot()` 所配置的值
因此,当登录过程中后端返回相应的认证信息时,只要符合 `ITokenModel` 接口对象,都可以调用 `set` 方法将认证存储至 `IStore` (默认实现 `LocalStorageStore`) 当中。
```ts
constructor(@Inject(BIXI_SERVICE_TOKEN) service: ITokenService) {
service.set({ token: `asdf` });
service.get().token; // output: asdf
}
```
## 存储类型
默认是采用 `LocalStorageStore` 持久化存储,你可以变更为其他存储方式。
```ts
import { MemoryStore } from '@bixi/auth';
@NgModule({
providers: [
// ...
{
provide: BIXI_STORE_TOKEN,
useValue: MemoryStore
},
// ...
]
})
export class AppModule { }
```
包含三种存储类型:
### LocalStorageStore
`localStorage` 存储,关掉浏览器后**不丢失**。
### SessionStorageStore
`sessionStorage` 存储,关掉浏览器后**丢失**。
### MemoryStore
内存存储,关掉浏览器标签后**丢失**。
### CookieStorageStore
Cookie 存储,需要额外安装 [js-cookie](https://github.com/js-cookie/js-cookie) 依赖,并在 `angular.json` 的 `scripts` 节点中引用 `"node_modules/js-cookie/src/js.cookie.js"`。