鸿蒙路由 HMRouter 配置及使用 三 全局拦截器使用
1、前期准备
简单封装一个用户首选项的工具类
import { preferences } from "@kit.ArkData";// 用户首选项方法封装
export class Preferences {private myPreferences: preferences.Preferences | null = null;// 初始化init(context: Context, options: preferences.Options) {this.myPreferences = preferences.getPreferencesSync(context, options);}// 获取参数getSync(key: string, defaultValue?: string) {if(this.myPreferences) {let val = this.myPreferences.getSync(key, defaultValue);return val;}else {return defaultValue;}}// 设置参数putSync(key: string, value: string) {if(this.myPreferences) {this.myPreferences.putSync(key, value)}}
}const myPreferences = new Preferences();
export { myPreferences }
在程序入口文件使用工具类
onWindowStageCreate(windowStage: window.WindowStage): void {// Main window is created, set main page for this abilityhilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onWindowStageCreate');// 初始化用户首选项工具类myPreferences.init(this.context, {name: 'myStore'})windowStage.loadContent('pages/Index', (err) => {if (err.code) {hilog.error(DOMAIN, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err));return;}hilog.info(DOMAIN, 'testTag', 'Succeeded in loading the content.');});}
2、创建全局登录拦截器
import { HMInterceptor, HMInterceptorAction, HMInterceptorInfo, HMRouterMgr, IHMInterceptor } from '@hadss/hmrouter';
import { myPreferences } from "../utils/Preferences"@HMInterceptor({priority: 9,interceptorName: "LoginInterceptor",global: true // 定义为全局拦截器
})
export class LoginInterceptor implements IHMInterceptor {// 路由白名单private WhiteList: string[] = ["LoginPage", "MainPage"]handle(info: HMInterceptorInfo): HMInterceptorAction {console.log("目标页面:" + info.targetName)// 如果目标地址在白名单内,则不拦截if(info.targetName && this.WhiteList.includes(info.targetName)) {console.log("白名单内,不拦截")return HMInterceptorAction.DO_NEXT;}// 获取用户tokenconst token = myPreferences.getSync("token")console.log("token", token)const isLogin: boolean = token ? true : false;// 已登录 继续向下执行if(isLogin) {console.log("已登录,继续向下执行")return HMInterceptorAction.DO_NEXT;}else {console.log("未登录,跳转到登录页面")// 未登录 跳转到登录页面HMRouterMgr.replace({pageUrl: "LoginPage",skipAllInterceptor: true // 跳过所有拦截器})// 停止执行下一个拦截器,并且不执行路由跳转动画,不执行路由栈操作return HMInterceptorAction.DO_REJECT;}}
}
3、创建登录页面
import { HMRouter, HMRouterMgr } from '@hadss/hmrouter';
import { myPreferences } from '../utils/Preferences';@HMRouter({pageUrl: "LoginPage",
})
@Component
export struct LoginPage {build() {Column() {Text("登录页面").fontSize(30).fontWeight(FontWeight.Bold)// 通过用户首选项添加测试数据 并跳转到首页Button("跳转到 - MainPage").onClick((event: ClickEvent) => {// 向用户首选项添加 验证字段myPreferences.putSync("token", "123456")HMRouterMgr.push({pageUrl: "MainPage",})})}}
}
4、首页添加测试跳转
// 测试登录拦截Button("测试登录拦截,跳转TwoPage").onClick((event: ClickEvent) => {HMRouterMgr.push({pageUrl: "TwoPage"})})
5、执行结果
相关文章:
鸿蒙路由 HMRouter 配置及使用 三 全局拦截器使用
1、前期准备 简单封装一个用户首选项的工具类 import { preferences } from "kit.ArkData";// 用户首选项方法封装 export class Preferences {private myPreferences: preferences.Preferences | null null;// 初始化init(context: Context, options: preference…...
国科大——计网(0812)——考试真题
前沿: 此篇文章记录了国科大秋季学期计网(0812)课程的一些考试真题,某些题目的答案仅供参考,还请自行辨别。 备注: 计网的考试题一般都会多一道,每道题的分值相同,例如:…...
Feedback-Guided Autonomous Driving
Feedback-Guided Autonomous Driving idea 问题设定:基于 CARLA 的目标驱动导航任务,通过知识蒸馏,利用特权智能体的丰富监督信息训练学生传感器运动策略函数 基于 LLM 的端到端驱动模型:采用 LLaVA 架构并添加航点预测头&#…...
超参数优化算法:scikit-opt库、Scikit-Optimize库
1 scikit-opt库:https://www.cnblogs.com/luohenyueji/p/18333387 https://blog.csdn.net/weixin_45750972/article/details/124683402 a 差分进化算法 (Differential Evolution):一种基于群体搜索的优化算法,通过模拟生物进化的过程来寻找最…...
我与DeepSeek读《大型网站技术架构》- 大型网站架构技术一览与Web开发技术发展历程
文章目录 大型网站架构技术一览1. 前端架构2. 应用层架构3. 服务层架构4. 存储层架构5. 后台架构6. 数据采集与监控7. 安全架构8. 数据中心机房架构 Web开发技术发展历程一、静态HTML阶段二、CGI脚本模式阶段三、服务器页面模式阶段 大型网站架构技术一览 1. 前端架构 浏览器…...
解决QT_Debug 调试信息不输出问题
方式1 :手动通过添加环境变量解决 ->使用命令: QT_LOGGING_TO_CONSOLE1 qtcreator启动 ->如若还未输出qDebug调试信息 则在程序中引<QLoggingCategory>包 #include <QLoggingCategory> ->在程序入口添加 QLoggingCategory::defa…...
NebulaGraph3.3.0部署与配置
系统参数 8g 2核参考文档: https://docs.nebula-graph.com.cn/3.8.0/4.deployment-and-installation/2.compile-and-install-nebula-graph/2.install-nebula-graph-by-rpm-or-deb/静态IP配置 # 修改网卡配置文件 vim /etc/sysconfig/network-scripts/ifcfg-ens33# 修改文件内容…...
oracle 基础知识之 多表查询
多表查询定义:当查询的数据并不是来源一个表时,需要使用多表连接操作完成查询。多表连接查询通过表之间的关联字段,一次查询出多个表的数据。多表查询包括了等值连接、左连接、右连接、完全连接。 1.等值连接 等值连接也称为简单连接…...
《论分布式系统架构设计及其应用》架构师论文
【摘要】 2022年3月,我参与了某金融科技公司“智能风控云平台”项目的研发工作,担任系统架构师职务,负责分布式系统架构设计与核心技术选型。该平台旨在为银行、保险等金融机构提供实时风险评估、反欺诈及数据服务,需支撑每秒十万…...
Matlab 汽车主动悬架LQR控制器设计与仿真
1、内容简介 Matlab 182-汽车主动悬架LQR控制器设计与仿真 可以交流、咨询、答疑 2、内容说明 略 1、研究背景 汽车悬架系统由弹性元件、导向元件和减振器组成,是车身与车轴之间连接的所有组合体零件的总称,也是车架(或承载式车身)与车桥(或车轮)之间一切力传递装置的总称,…...
JMeter 参数化工作原理说明
一、核心目标:让每条请求都能用不同数据 参数化的本质是让 JMeter 在发送请求时,自动替换变量为不同的值。例如: 模拟 100 个用户登录 → 每个用户使用不同的账号密码。模拟搜索不同关键词 → 每次请求自动更换关键词。 二、参数化如何工作…...
[免费]直接整篇翻译pdf工具-支持多种语言
<闲来没事写篇博客填补中文知识库漏洞> 如题,[免费][本地]工具基于开源仓库: 工具 是python!太好了,所以各个平台都可以,我这里基于windows. 1. 先把github代码下载下来: git clone https://githu…...
Python 鼠标轨迹算法 - 防止游戏检测
一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序,它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言,原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势: 模拟…...
Unity音乐内存优化
文章目录 音乐下载远程音乐 音乐 音乐文件如果只从工程目录里面读取,那有很多种方法可以优化,比如设置Load Type直接采用流式加载方式,内存直接降最小(但是记住,每种优化都是有对应的代价的,优化是一种平衡…...
hubilder打包ios app, 并上传TestFlight
目录 一 前提条件 不是该项目成员解决 1. 直接找到该项目的管理人员去设置你的账号 2. 直接重新生成APPID(一般不建议的,可以查看) 3. 如果是离职人员,可以让他将项目权限转让出来 - 如何转让应用 - DCloud问答 未申请ios证书和描述文件 APP ID 的…...
3个 Vue $set 的应用场景
大家好,我是大澈!一个喜欢结交朋友、喜欢编程技术和科技前沿的老程序员👨🏻💻,关注我,科技未来或许我能帮到你! 在 Vue2 中,由于 Object.defineProperty 的限制&#…...
3ds Max 导入到 After Effects 还原摄像机要注意事项--deepseek
我:dp我这有两个脚本分别是syn软件相机导出到max的和syn软件相机导出到ae的,你能看出差别来吗?如果我想把max里的相机导入到ae里,保持原来的位置方向,该怎么做 dp:从这两个脚本可以看出,3ds Ma…...
从零开始 | C语言基础刷题DAY3
❤个人主页:折枝寄北的博客 目录 1.打印3的倍数的数2.从大到小输出3. 打印素数4.打印闰年5.最大公约数 1.打印3的倍数的数 题目: 写一个代码打印1-100之间所有3的倍数的数字 代码: int main(){int i 0;for (i 1; i < 100; i){if (i % …...
SQL注入第7关
存在注入,需要使用单引号闭合 拥有root权限,secure_file_priv值为空,确定路径 http://127.0.0.1/sqli-labs-master/Less-7/?id1)) union select 1,"<?phpinfo();?>",3 into outfile "D:\\landui\\xp\\phpstudy_pro…...
Git使用和原理(3)
1.远程操作 1.1分布式版本控制系统 我们⽬前所说的所有内容(⼯作区,暂存区,版本库等等),都是在本地!也就是在你的笔记本或者 计算机上。⽽我们的 Git 其实是分布式版本控制系统!什么意思呢&a…...
从零搭建微服务项目Pro(第6-1章——Spring Security+JWT实现用户鉴权访问与token刷新)
前言: 在现代的微服务架构中,用户鉴权和访问控制是非常重要的一部分。Spring Security 是 Spring 生态中用于处理安全性的强大框架,而 JWT(JSON Web Token)则是一种轻量级的、自包含的令牌机制,广泛用于分…...
LeetCode 124.二叉树中的最大路径和
题目: 二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。 路径和 是路径中各节点值的总和。 给你一个二叉树的根节点…...
结构型模式之适配器模式:让不兼容的接口兼容
在软件开发中,经常会遇到这样一种情况:系统的不同部分需要进行交互,但由于接口不兼容,导致无法直接使用。这时,适配器模式(Adapter Pattern)就能派上用场。适配器模式是设计模式中的结构型模式&…...
Python 中用T = TypeVar(“T“)这个语法定义一个“类型变量”,属于类型提示系统的一部分
T TypeVar("T") 这一语法规则定义了一个泛型类型变量 T,用于标记“某种类型”,让你可以写出既通用又类型安全的代码。 TypeVar(“T”) 会创建一个名为 T 的类型占位符,这个占位符可以在后续的函数、类或方法中用作泛型参数。泛型…...
uniapp移动端图片比较器组件,仿英伟达官网rtx光追图片比较器功能
组件下载地址:https://ext.dcloud.net.cn/plugin?id22609 已测试h5和微信小程序,理论支持全平台 亮点: 简单易用 使用js计算而不是resize属性,定制化程度更高 组件挂在后可播放指示线动画,提示用户可以拖拽比较图片…...
理解我们单片机拥有的资源
目录 为什么要查询单片机拥有的资源 所以,去哪些地方可以找数据手册 一个例子:STM32F103C8T6 前言 本文章隶属于项目: Charliechen114514/BetterATK: This is a repo that helps rewrite STM32 Common Repositorieshttps://github.com/C…...
接上一篇,C++中,如何设计等价于Qt的信号与槽机制。
看下面例子: class FileManager : public QObject {Q_OBJECTpublic:FileManager(QObject* parent nullptr) : QObject(parent) {}void changeFileName(const QString& newName) {fileName newName;emit fileNameChanged(fileName);}signals:void fileNameChan…...
redis分片集群如何解决高并发写问题的?
不使用分片集群,仅使用主从复制和哨兵模式下,可以有多个主从集群,但每个主从集群一般只有一个活跃的主节点并执行写操作,每个主从集群的数据也可能(应该)是不同的,同时每个主从集群存储的数据没…...
2025 linux系统资源使用率统计docker容器使用率统计docker监控软件Weave Scope安装weavescope
1.Weave Scope介绍 Weave Scope 是一款用于监控和可视化 Docker 容器、Kubernetes 集群以及分布式应用的强大工具。它的设计目标是帮助开发者和运维人员更好地理解和管理复杂的微服务架构。以下是 Weave Scope 的主要优点: 1. 实时可视化 Weave Scope 提供了一个直…...
Spring Boot 核心知识点深度详解:自动化配置 (Auto-configuration) - 解锁 Spring Boot 的 “魔法”
Spring Boot 核心知识点深度详解:自动化配置 (Auto-configuration) - 解锁 Spring Boot 的 “魔法” ✨ 自动化配置 (Auto-configuration) 是 Spring Boot 最核心的特性之一,也是它能够大幅简化 Spring 应用开发的关键所在。 它让 Spring Boot 应用能够…...
嵌入式Linux | 什么是 BootLoader、Linux 内核(kernel)、和文件系统?
01 什么是 BootLoader 呢? 它是个引导程序,也就是硬件复位以后第一个要执行的程序,它主要工作就是初始化操作系统运行的环境,比如说内存、定时器、缓冲器等,当这个工作做完以后,再把操作系统的代码加载…...
IP关联是什么?怎么避免?
在跨境电商的道路上,大家好!今天想和大家聊一聊一个非常重要的话题,那就是IP关联的问题。在商业活动中,了解如何避免IP关联对保护我们宝贵的商铺至关重要。接下来,我们将深入探讨IP关联的概念、影响及如何有效防止这一…...
【Agent】OpenManus-Prompt组件详细分析
1. 提示词架构概述 OpenManus 的提示词组件采用了模块化设计,为不同类型的智能体提供专门的提示词模板。每个提示词模块通常包含两种核心提示词:系统提示词(System Prompt)和下一步提示词(Next Step Prompt࿰…...
算数操作符、赋值操作符、单目操作符、强制类型转换
一、算术操作符(、 -、 *、 /、 %) • - * / %操作符都是双⽬操作符,有**两个操作数**的符号就叫做双目操作符 10 4| || | 操作数1 操作数2// - % / * 以此类推•操作符也被叫做:运算符 1. 符号、符号 - 和 符号* •…...
华为OD机试 - 九宫格按键输入 - 逻辑分析(Java 2023 B卷 200分)
题目描述 九宫格按键输入,输出显示内容。有英文和数字两个模式,默认是数字模式。数字模式直接输出数字,英文模式连续按同一个按键会依次出现这个按键上的字母。如果输入“/”或其他字符,则循环中断。 输入描述 输入范围为数字0…...
DeepSeek大模型在政务服务领域的应用
DeepSeek大模型作为国产人工智能技术的代表,近年来在政务服务领域的应用呈现多点开花的态势。通过多地实践,该技术不仅显著提升了政务服务的效率与智能化水平,还推动了政府治理模式的创新。以下从技术应用场景、典型案例及发展趋势三个维度进…...
卷积神经网络 - 一维卷积、二维卷积
卷积(Convolution),也叫褶积,是分析数学中一种重要的运算。在信号处理或图像处理中,经常使用一维或二维卷积,本博文我们来学习一维卷积和二维卷积。 理解一维卷积和二维卷积的核心在于把握维度对特征提取方式的影响。我们从数学定…...
【NLP 33、实践 ⑦ 基于Triple Loss作表示型文本匹配】
目录 一、配置文件 config.py 二、 数据加载文件 loader.py 1.加载数据 Ⅰ、加载字表或词表 Ⅱ、加载标签映射表 Ⅲ、封装数据 2.处理数据 Ⅰ、补齐或截断 Ⅱ、定义类的特殊方法 ① 返回数据集大小 ② 生成随机训练样本 ③ 根据索引返回样本 Ⅲ、加载和处理训练样本和测试样本 …...
基于CNN的多种类蝴蝶图像分类
基于CNN的多种类蝴蝶图像分类🦋 基于卷积神经网络对64992786张图像,75种不同类别的蝴蝶进行可视化分析、模型训练及分类展示 导入库 import pandas as pd import os import matplotlib.pyplot as plt import seaborn as sns import numpy as np from …...
Linkreate wordpressAI智能插件-自动生成原创图文、生成关键词、获取百度搜索下拉关键词等
Linkreate wordpressAI插件核心功能亮点 文章生成与优化 自动化文章生成:利用 AI 技术,根据关键词生成高质量文章。 支持指定长度和要求,异步生成不阻塞操作。 且 AI 可自动生成精准的 tag 标签,利于 SEO 优化。 批量生成文章…...
uniapp-x web 开发警告提示以及解决方法
defineModel props...
详细介绍 SetWindowPos() 函数
书籍:《Visual C 2017从入门到精通》的2.3.8 Win32控件编程 环境:visual studio 2022 内容:【例2.29】模态对话框 说明:以下内容大部分来自腾讯元宝。 1. 函数功能与用途 SetWindowPos() 是 Windows API 中用于动态调整窗口…...
SpringBoot桂林旅游景点导游平台开发与设计
一个基于SpringBoot开发的桂林旅游景点导游平台项目。该项目不仅功能全面,而且易于部署,适合初学者学习和进阶开发者参考。 项目概述 该项目旨在为用户提供一个便捷的桂林旅游景点信息查询与线路推荐平台。系统分为管理员模块和用户模块,分…...
深入理解传输层协议
各类资料学习下载合集 https://pan.quark.cn/s/8c91ccb5a474 传输层是计算机网络中的一个重要层次,其主要任务是为应用层提供可靠的数据传输服务。传输层的协议主要包括 TCP(传输控制协议)和 UDP(用户数据报协议)。本文将详细解析这两种协议的特点、使用…...
基于金融产品深度学习推荐算法详解【附源码】
深度学习算法说明 1、简介 神经网络协同过滤模型(NCF) 为了解决启发式推荐算法的问题,基于神经网络的协同过滤算法诞生了,神经网络的协同过滤算法可以 通过将用户和物品的特征向量作为输入,来预测用户对新物品的评分,从而解决…...
java 中散列表(Hash Table)和散列集(Hash Set)是基于哈希算法实现的两种不同的数据结构
在 Java 中,散列表(Hash Table)和散列集(Hash Set)是两种不同的数据结构,但它们都基于哈希表的原理来实现。下面是它们的联系与区别、实现类以及各自的优缺点,并用表格进行对比整理。 联系与区…...
Tauri + Vite + SvelteKit + TailwindCSS + DaisyUI 跨平台开发详细配置指南(Windows)
Tauri Vite SvelteKit TailwindCSS DaisyUI 跨平台开发详细配置指南(Windows) 本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议。转载请注明出处及本声明 原文链接:[你的文章链接] 🛠️ 环境准备 1. 安装核心工具…...
centos 7误删/bash 拯救方法
进入救援模式 1. 插入CentOS 7安装光盘,重启系统。在开机时按BIOS设置对应的按键(通常是F2等),将启动顺序调整为CD - ROM优先。 2. 系统从光盘启动后,选择“Troubleshooting”,然后选择“Rescue a Cent…...
协程池是调用端并发请求的缓释胶囊
hello, 我是马甲哥,这是我的第183篇原创文章,阅读时间3min,有用指数4颗星。 昨天"朝花夕拾"栏目倒腾了一款具有请求排队功能的并发受限服务器。 演示了互联网高并发请求,服务端遇到的现实情况(服务器高负载、…...
【渗透测试】webpack对于渗透测试的意义
作者 :Yuppie001 作者主页 : 传送 本文专栏 :Web漏洞篇 🌟🌟🌟🌟🌟🌟🌟🌟 webpack: 一.webpack是什么二.对于渗透测试的意义&#…...