自学内容网 自学内容网

华为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)!