当前位置: 首页 > news >正文

华为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) 和  valueawait 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")

相关文章:

华为HarmonyOS NEXT 原生应用开发: 数据持久化存储(用户首选项)的使用 token令牌存储鉴权!

Preferences 数据持久化存储 用户首选项(Preferences) 1. 封装 仓库工具类 ● 这里可以选择将 数据字段 key 抽取为一个静态方法,这里选择让用户传参,看起来较容易理解! /*** 首选项 preferences - 实现数据持久化…...

每天40分玩转Django:Django视图和URL

Django视图和URL 一、课程概述 学习项目具体内容预计用时视图基础函数视图、类视图、视图装饰器90分钟URL配置URL模式、路由系统、命名URL60分钟请求处理请求对象、响应对象、中间件90分钟 二、视图基础 2.1 函数视图 # blog/views.py from django.shortcuts import render…...

Kioptirx level4

具体步骤 通过nmap扫描我们所在的网段探测一下存活的主机,发现目标主机开放了80端口可以去访问一下 在访问的同时通过dirb去爆破一下目录,这边发现有一个john的目录不知道是什么可以去 这边在用dirsearch去扫一下防止有漏掉的页面我们没有访问到&#x…...

JPG 转 PDF:免费好用的在线图片转 PDF 工具

JPG 转 PDF:免费好用的在线图片转 PDF 工具 在日常工作和生活中,我们经常需要将图片转换为 PDF 格式。无论是制作电子文档、准备演示材料,还是整理照片集,将图片转换为 PDF 都是一个常见的需求。今天为大家介绍一款完全免费、无需…...

《Django 5 By Example》阅读笔记:p543-p550

《Django 5 By Example》学习第 19 天,p543-p550 总结,总计 8 页。 一、技术总结 1.fixtures (1)定义 A fixture is a collection of files that contain the serialized contents of the database. (2)作用 1)数据导入 一般来说,我们是…...

精品基于Python实现的微信小程序校园导航系统-微信小程序

[含文档PPT源码等] [包运行成功永久免费答疑辅导] 《django微信小程序校园导航系统》该项目采用技术Python的django框架、mysql数据库 ,项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、核心代码介绍视频等 软件开发环境及开发工具&#xf…...

【数字花园】个人知识库网站搭建:①netlify免费搭建数字花园

目录 [[数字花园]]的构建原理包括三个步骤:五个部署方案教程相关教程使用的平台 步骤信息管理 这里记录的自己搭建数字花园(在线个人知识库)的经历,首先尝试的是网上普遍使用的方法,也就是本篇文章介绍的。 后面会继续…...

数据仓库工具箱—读书笔记01(数据仓库、商业智能及维度建模初步)

数据仓库、商业智能及维度建模初步 记录一下读《数据仓库工具箱》时的思考,摘录一些书中关于维度建模比较重要的思想与大家分享🤣🤣🤣 博主在这里先把这本书"变薄"~有时间的小伙伴可以亲自再读一读,感受一下…...

分布式 窗口算法 总结

前言 相关系列 《分布式 & 目录》《分布式 & 窗口算法 & 总结》《分布式 & 窗口算法 & 问题》 参考文献 《【算法】令牌桶算法》 固定窗口算法 简介 固定窗口算法是最简单的流量控制算法。固定窗口算法的核心原理是将系统的生命周期划分为一个个…...

docker容器内部启动jupyter notebook但是宿主机无法访问的解决方法

目录 1.问题2.解决方法 1.问题 在docker容器内启动了jupyter notebook,在宿主机内用如下的url无法访问 http://localhost:8888 http://127.0.0.1:8888 启动方法: jupyter notebook 2.解决方法 启动方法加上选项[ --ip‘*’]或者[–ip‘0.0.0.0’] 即启…...

2.2 数据库设计方法

数据库设计流程: 1.需求分析:准确了解分析用户需求(包括数据与处理)。需求分析是整个设计过程的基础,需求分析决定了构建数据库大厦的速度和质量 2.概念结构设计:概设结构设计是整个数据库设计的关键&…...

ALOHA 协议详解

注:本文为 “ALOHA 协议” 相关文章合辑。 未去重整理。 动态分配信道(ALOHA 协议、CSMA 协议) QuantumYou 于 2021-07-27 09:32:04 发布 ALOHA 协议 纯 ALOHA 协议 -纯 ALOHA 协议思想:不监听信道,不按时间槽发送…...

Quant connect的优势和不足,学习曲线难

Quant connect的优势和不足 Quant connect作为一个成熟的算法交易平台,具有许多优势,包括: 强大的回测功能:Quant connect提供了丰富的数据源和回测功能,可以对各种交易策略进行全面的回测和分析。 容易上手&#xf…...

分布式 漏桶算法 总结

前言 相关系列 《分布式 & 目录》《分布式 & 漏桶算法 & 总结》《分布式 & 漏桶算法 & 问题》 概述 简介 LBA Leaky Bucket Algorithm 漏桶算法是一种流行于网络通信领域的流量控制/频率限制算法。漏桶算法的核心原理是通过一个概念上的“漏桶”来…...

2450.学习周刊-2024年50周

封面 人生五个球 ✍优秀博文 面对老板安排的工作,事事有回应,有必要吗? 职场精英进阶手册:工作推进五原则,让你合理高效地利用时间 上个班而已,千万别畏手畏脚 理解了雷军说的SU7要守正出奇&#xff0…...

前端性能优化实战:从加载到渲染的全链路提升

"这个页面怎么这么慢啊?" 产品经理小李站在我的工位旁,指着屏幕上的数据大屏抱怨道。我打开 Chrome DevTools 看了一眼,首屏加载时间确实有点吓人 - 足足用了 8 秒。作为一个追求极致体验的前端开发者,这个数字让我坐不住了。 回想起上周的性能检测会议,…...

pdf merge

在 Ubuntu 22.04 上,你可以使用以下命令行工具来合并多个 PDF 文件: 1. pdftk pdftk 是一个强大的 PDF 工具,支持合并、拆分和其他操作。安装和使用方法如下: sudo apt install pdftk pdftk file1.pdf file2.pdf cat output me…...

Python高性能web框架-FastApi教程:(3)路径操作装饰器方法的参数

路径操作装饰器方法的参数 1. 定义带有参数的POST请求路由 app.post(/items,tags[这是items测试接口],summary这是items测试的summary,description这是items测试的description,response_description这是items测试的response_description) def test():return {items: items数据…...

怎么禁用 vscode 中点击 go 包名时自动打开浏览器跳转到 pkg.go.dev

本文引用怎么禁用 vscode 中点击 go 包名时自动打开浏览器跳转到 pkg.go.dev 在 vscode 设置项中配置 gopls 的 ui.navigation.importShortcut 为 Definition 即可。 "gopls": {"ui.navigation.importShortcut": "Definition" }ui.navigation.i…...

bean创建源码

去字节面试,直接让人出门左拐:Bean 生命周期都不知道! spring启动创建bean流程 下面就接上了 bean生命周期 doGetBean Object sharedInstance this.getSingleton(beanName); sharedInstance this.getSingleton(beanName, new ObjectF…...

C语言函数指针与回调函数实战指南

1. 函数指针:C语言的瑞士军刀在C语言的世界里,指针堪称是这门语言的灵魂所在。我们熟悉整型指针、字符指针、结构体指针,但函数指针这个强大的工具却常常被开发者忽视。实际上,函数指针是理解回调函数的基础,也是实现C…...

从‘亮暗模式’到‘向量夹角’:用大白话和几何直觉彻底搞懂归一化互相关(NCC)

从乐高积木到向量空间:用生活化类比拆解归一化互相关(NCC)的核心逻辑 想象你正在玩一款特殊的乐高积木游戏:每块积木的凸起和凹陷构成独特纹路,而你的任务是在一堆杂乱积木中找出与手中样本完全契合的那一块。这个看似…...

用Python从零解析ARS548 4D毫米波雷达数据:一个完整的数据处理与可视化实战教程

用Python从零解析ARS548 4D毫米波雷达数据:一个完整的数据处理与可视化实战教程 在自动驾驶和智能交通领域,4D毫米波雷达正成为感知系统的核心传感器之一。相比传统毫米波雷达,ARS548等新一代4D雷达不仅能提供目标的距离、速度和方位角信息&a…...

编写程序实现钓鱼浮标刻度雕刻,防水不褪色,输出钓友精准看口,实用刚需。

应用到广大钓友最关心的“眼睛”——钓鱼浮标(浮漂)上。我们要解决的是户外垂钓中一个既专业又恼人的问题:浮标刻度的防水与清晰度。项目方案:基于Python的钓鱼浮标激光刻度精密雕刻系统一、 实际应用场景描述想象一下&#xff0c…...

Massachusetts:1类道路语义分割数据集Massachusetts数据集包括1个类别类别分别是:road 共计图片809张,分辨率是1500x1500像素数据集是VOC格式训练集图

Massachusetts:1类道路语义分割数据集 Massachusetts数据集包括1个类别 类别分别是:road 共计图片809张,分辨率是1500x1500像素 数据集是VOC格式 训练集图片647张,验证集81张、测试集图片有81 相关UNet、FCN、DeepLabV3、Segform…...

【VBA】【EXCEL】分类汇总

option explicit option base 1Sub 分类汇总()Dim ws0 As Worksheet, ws1 As WorksheetDim arr0 As Variant, arr1 As VariantDim lastRow As Long, i As Long, m As Long, cnt As LongDim acct As String, opp As String, key As String, pts() As StringDim amt As Double, t…...

ROS2 Jazzy机器人导航避坑指南:详解Navigation2参数配置中那些容易出错的‘坑’

ROS2 Jazzy导航系统参数配置实战:从踩坑到精通的避坑手册 当你第一次打开ROS2 Jazzy的Navigation2参数配置文件时,是否感觉像是面对一本没有注释的古老秘籍?那些看似简单的参数背后,往往隐藏着让机器人"发疯"的陷阱。本…...

零基础玩转PowerPaint-V1:手把手教你用Gradio实现智能修图,小白也能轻松上手

零基础玩转PowerPaint-V1:手把手教你用Gradio实现智能修图,小白也能轻松上手 你是不是也遇到过这样的烦恼?拍了一张很满意的照片,但背景里总有个碍眼的垃圾桶;或者找到一张完美的素材图,偏偏有个大大的水印…...

SQLMesh社区贡献指南:如何参与开源项目开发

SQLMesh社区贡献指南:如何参与开源项目开发 【免费下载链接】sqlmesh Scalable and efficient data transformation framework - backwards compatible with dbt. 项目地址: https://gitcode.com/gh_mirrors/sq/sqlmesh SQLMesh是一个可扩展且高效的数据转换…...

别再傻傻分不清了!微信支付H5、JSAPI、Native三种模式到底怎么选?附服务商模式实战代码

微信支付三大模式深度解析:从技术选型到服务商实战 每次面对微信支付的H5、JSAPI和Native三种模式,不少开发者都会陷入选择困难症。去年我们团队在为一个连锁零售品牌做线上商城升级时,就因为在模式选择上判断失误,导致小程序支付…...