华为HarmonyOS NEXT 原生应用开发: 数据持久化存储(用户首选项)的使用 token令牌存储鉴权!
Preferences 数据持久化存储
用户首选项(Preferences)
1. 封装 仓库工具类
● 这里可以选择将 数据字段 key 抽取为一个静态方法,这里选择让用户传参,看起来较容易理解!
/**
* 首选项 preferences - 实现数据持久化存储
*/
import { preferences } from '@kit.ArkData'
export class PreferencesClass {
// 上下文(在【EntryAbility中获取使用 this.context】, 【除此之外,使用 getContext() 获取】)
static context: Context
// 获取创库
static getStoreInstance() {
return preferences.getPreferencesSync(PreferencesClass.context || getContext(), {name: "Token_Key"})
}
/**
* 设置仓库数据
* @param key:数据在仓库的字段名
* @param token:需要存储或者修改的 数据 value 值
*/
static async setData(key: string, token: string) {
const store = PreferencesClass.getStoreInstance()
store.putSync(key, token) // 设置字段(key) 和 value
await store.flush()
}
/**
* 获取仓库数据
* @param:key 数据所对应的字段 key
* @returns: (筛选仓库:存在将数据给用户,不存在则默认为空字符串)
*/
static getData(key: string) {
return PreferencesClass.getStoreInstance().getSync(key, "")
}
/**
* 删除数据
* @param key: 参数为需要删除的数据字段名
*/
static async removeData(key: string) {
const storeInstance = PreferencesClass.getStoreInstance()
storeInstance.deleteSync(key)
await storeInstance.flush()
}
}
2. token的存储鉴权
- 这里判断用户是否存在token 权限,实现用户进应用是去login还是home页面。
let page: string = ""
// 获取上下文
PreferencesClass.context = this.context
// 在窗口模型创建完毕,加载数据内容(页面)之前获取token,校验去向
if ( PreferencesClass.getData("token") === "" ) {
// 没登录状态,去登录页面
page = "pages/Login"
} else {
// 仓库有token 数据,就直接去首页
page = "pages/Home"
}
windowStage.loadContent(page, (err) => {
});
}
3. 对仓库中的 数据 进行操作
- 我们只需要调用工具类中的方法即可实现操作, 需要注意的是每次使用要保证传入当前的上下文哦!操作方法直接调用静态属性赋值即可。(这里我在Ability配置了,所以全局共享了)
// 设置为空,相当于删除token了!
PreferencesClass.setData("token", "")
// 调用方法,传入字段名,实现删除!
PreferencesClass.removeData("token")
原文地址:https://blog.csdn.net/Forever_Hopeful/article/details/144378809
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!