鸿蒙金融理财全栈项目——运维监控、性能优化、安全加固

鸿蒙金融理财全栈项目——运维监控、性能优化、安全加固

《鸿蒙APP开发从入门到精通》第20篇:鸿蒙金融理财全栈项目——运维监控、性能优化、安全加固 📊🔧🛡️

在这里插入图片描述

内容承接与核心价值

这是《鸿蒙APP开发从入门到精通》的第20篇——运维监控、性能优化、安全加固篇100%承接第19篇的生态合作、用户运营、数据变现架构,并基于金融场景的运维监控、性能优化、安全加固要求,设计并实现鸿蒙金融理财全栈项目的运维监控、性能优化、安全加固功能

学习目标

  • 掌握鸿蒙金融理财项目的运维监控设计与实现;
  • 实现应用监控、服务器监控、数据库监控;
  • 理解性能优化在金融场景的核心设计与实现;
  • 实现前端优化、后端优化、数据库优化;
  • 掌握安全加固在金融场景的设计与实现;
  • 实现代码加固、数据加密、安全审计;
  • 优化金融理财项目的用户体验(运维监控、性能优化、安全加固)。

学习重点

  • 鸿蒙金融理财项目的运维监控设计原则;
  • 性能优化在金融场景的应用;
  • 安全加固在金融场景的设计要点。

一、 运维监控基础 🎯

1.1 运维监控定义

运维监控是指对金融理财项目的应用、服务器、数据库等进行监控,及时发现和解决问题,主要包括以下方面:

  • 应用监控:监控应用的运行状态;
  • 服务器监控:监控服务器的资源使用情况;
  • 数据库监控:监控数据库的性能。

1.2 运维监控架构

运维监控采用分层架构,由以下部分组成:

  • 应用监控层:负责应用的运行状态监控;
  • 服务器监控层:负责服务器的资源使用情况监控;
  • 数据库监控层:负责数据库的性能监控。

二、 运维监控实战 🛠️

2.1 实战目标

基于金融场景的运维监控要求,实现以下功能:

  • 应用监控:监控应用的运行状态;
  • 服务器监控:监控服务器的资源使用情况;
  • 数据库监控:监控数据库的性能。

2.2 🔧 应用监控实现

1. 应用监控工具类

⌨️ entry/src/main/ets/utils/ApplicationMonitoringUtil.ets

import monitoring from'@ohos.monitoring';// 应用监控工具类exportclassApplicationMonitoringUtil{privatestatic instance: ApplicationMonitoringUtil |null=null;private monitoringHelper: monitoring.MonitoringHelper |null=null;// 单例模式staticgetInstance(): ApplicationMonitoringUtil {if(!ApplicationMonitoringUtil.instance){ ApplicationMonitoringUtil.instance =newApplicationMonitoringUtil();}return ApplicationMonitoringUtil.instance;}// 初始化应用监控工具asyncinit():Promise<void>{if(!this.monitoringHelper){this.monitoringHelper = monitoring.createMonitoringHelper();}}// 获取应用运行状态asyncgetApplicationRunningStatus():Promise<monitoring.ApplicationRunningStatus>{if(!this.monitoringHelper){returnnull;}const result =awaitthis.monitoringHelper.getApplicationRunningStatus();return result;}// 监控应用性能asyncmonitorApplicationPerformance():Promise<monitoring.ApplicationPerformanceData>{if(!this.monitoringHelper){returnnull;}const result =awaitthis.monitoringHelper.monitorApplicationPerformance();return result;}}
2. 应用监控应用

⌨️ entry/src/main/ets/pages/ApplicationMonitoringPage.ets

import{ ApplicationMonitoringUtil }from'../utils/ApplicationMonitoringUtil';@Entry@Component struct ApplicationMonitoringPage {@State applicationRunningStatus: monitoring.ApplicationRunningStatus |null=null;build(){Column({ space:16}){Text('应用监控').fontSize(18).fontWeight(FontWeight.Bold).textColor('#000000');if(this.applicationRunningStatus){Text(`应用状态:${this.applicationRunningStatus.status}`).fontSize(14).textColor('#000000');Text(`CPU使用率:${this.applicationRunningStatus.cpuUsage}%`).fontSize(14).textColor('#666666');Text(`内存使用率:${this.applicationRunningStatus.memoryUsage}%`).fontSize(14).textColor('#666666');Text(`网络请求数:${this.applicationRunningStatus.networkRequestCount}`).fontSize(14).textColor('#666666');}ButtonComponent({ text:'监控应用性能',onClick:async()=>{awaitthis.monitorApplicationPerformance();}, disabled:false});}.width('100%').height('100%').padding(16).backgroundColor('#F5F5F5');}aboutToAppear(){// 初始化应用监控 ApplicationMonitoringUtil.getInstance().init();// 获取应用运行状态this.getApplicationRunningStatus();}asyncgetApplicationRunningStatus():Promise<void>{this.applicationRunningStatus =await ApplicationMonitoringUtil.getInstance().getApplicationRunningStatus();}asyncmonitorApplicationPerformance():Promise<void>{const result =await ApplicationMonitoringUtil.getInstance().monitorApplicationPerformance(); promptAction.showToast({ message:`应用性能监控完成,响应时间:${result.responseTime}ms`});}}

2.3 🔧 服务器监控实现

1. 服务器监控工具类

⌨️ entry/src/main/ets/utils/ServerMonitoringUtil.ets

import server from'@ohos.server';// 服务器监控工具类exportclassServerMonitoringUtil{privatestatic instance: ServerMonitoringUtil |null=null;private serverHelper: server.ServerHelper |null=null;// 单例模式staticgetInstance(): ServerMonitoringUtil {if(!ServerMonitoringUtil.instance){ ServerMonitoringUtil.instance =newServerMonitoringUtil();}return ServerMonitoringUtil.instance;}// 初始化服务器监控工具asyncinit():Promise<void>{if(!this.serverHelper){this.serverHelper = server.createServerHelper();}}// 获取服务器资源使用情况asyncgetServerResourceUsage():Promise<server.ServerResourceUsage>{if(!this.serverHelper){returnnull;}const result =awaitthis.serverHelper.getServerResourceUsage();return result;}// 监控服务器性能asyncmonitorServerPerformance():Promise<server.ServerPerformanceData>{if(!this.serverHelper){returnnull;}const result =awaitthis.serverHelper.monitorServerPerformance();return result;}}
2. 服务器监控应用

⌨️ entry/src/main/ets/pages/ServerMonitoringPage.ets

import{ ServerMonitoringUtil }from'../utils/ServerMonitoringUtil';@Entry@Component struct ServerMonitoringPage {@State serverResourceUsage: server.ServerResourceUsage |null=null;build(){Column({ space:16}){Text('服务器监控').fontSize(18).fontWeight(FontWeight.Bold).textColor('#000000');if(this.serverResourceUsage){Text(`CPU使用率:${this.serverResourceUsage.cpuUsage}%`).fontSize(14).textColor('#000000');Text(`内存使用率:${this.serverResourceUsage.memoryUsage}%`).fontSize(14).textColor('#666666');Text(`磁盘使用率:${this.serverResourceUsage.diskUsage}%`).fontSize(14).textColor('#666666');Text(`网络带宽:${this.serverResourceUsage.networkBandwidth}MB/s`).fontSize(14).textColor('#666666');}ButtonComponent({ text:'监控服务器性能',onClick:async()=>{awaitthis.monitorServerPerformance();}, disabled:false});}.width('100%').height('100%').padding(16).backgroundColor('#F5F5F5');}aboutToAppear(){// 初始化服务器监控 ServerMonitoringUtil.getInstance().init();// 获取服务器资源使用情况this.getServerResourceUsage();}asyncgetServerResourceUsage():Promise<void>{this.serverResourceUsage =await ServerMonitoringUtil.getInstance().getServerResourceUsage();}asyncmonitorServerPerformance():Promise<void>{const result =await ServerMonitoringUtil.getInstance().monitorServerPerformance(); promptAction.showToast({ message:`服务器性能监控完成,响应时间:${result.responseTime}ms`});}}

2.4 🔧 数据库监控实现

1. 数据库监控工具类

⌨️ entry/src/main/ets/utils/DatabaseMonitoringUtil.ets

import database from'@ohos.database';// 数据库监控工具类exportclassDatabaseMonitoringUtil{privatestatic instance: DatabaseMonitoringUtil |null=null;private databaseHelper: database.DatabaseHelper |null=null;// 单例模式staticgetInstance(): DatabaseMonitoringUtil {if(!DatabaseMonitoringUtil.instance){ DatabaseMonitoringUtil.instance =newDatabaseMonitoringUtil();}return DatabaseMonitoringUtil.instance;}// 初始化数据库监控工具asyncinit():Promise<void>{if(!this.databaseHelper){this.databaseHelper = database.createDatabaseHelper();}}// 获取数据库性能asyncgetDatabasePerformance():Promise<database.DatabasePerformanceData>{if(!this.databaseHelper){returnnull;}const result =awaitthis.databaseHelper.getDatabasePerformance();return result;}// 监控数据库性能asyncmonitorDatabasePerformance():Promise<database.DatabasePerformanceData>{if(!this.databaseHelper){returnnull;}const result =awaitthis.databaseHelper.monitorDatabasePerformance();return result;}}
2. 数据库监控应用

⌨️ entry/src/main/ets/pages/DatabaseMonitoringPage.ets

import{ DatabaseMonitoringUtil }from'../utils/DatabaseMonitoringUtil';@Entry@Component struct DatabaseMonitoringPage {@State databasePerformance: database.DatabasePerformanceData |null=null;build(){Column({ space:16}){Text('数据库监控').fontSize(18).fontWeight(FontWeight.Bold).textColor('#000000');if(this.databasePerformance){Text(`查询响应时间:${this.databasePerformance.queryResponseTime}ms`).fontSize(14).textColor('#000000');Text(`插入响应时间:${this.databasePerformance.insertResponseTime}ms`).fontSize(14).textColor('#666666');Text(`更新响应时间:${this.databasePerformance.updateResponseTime}ms`).fontSize(14).textColor('#666666');Text(`删除响应时间:${this.databasePerformance.deleteResponseTime}ms`).fontSize(14).textColor('#666666');}ButtonComponent({ text:'监控数据库性能',onClick:async()=>{awaitthis.monitorDatabasePerformance();}, disabled:false});}.width('100%').height('100%').padding(16).backgroundColor('#F5F5F5');}aboutToAppear(){// 初始化数据库监控 DatabaseMonitoringUtil.getInstance().init();// 获取数据库性能this.getDatabasePerformance();}asyncgetDatabasePerformance():Promise<void>{this.databasePerformance =await DatabaseMonitoringUtil.getInstance().getDatabasePerformance();}asyncmonitorDatabasePerformance():Promise<void>{const result =await DatabaseMonitoringUtil.getInstance().monitorDatabasePerformance(); promptAction.showToast({ message:`数据库性能监控完成,查询响应时间:${result.queryResponseTime}ms`});}}

三、 性能优化实战 🛠️

3.1 实战目标

基于金融场景的性能优化要求,实现以下功能:

  • 前端优化:优化前端的渲染性能;
  • 后端优化:优化后端的响应性能;
  • 数据库优化:优化数据库的查询性能。

3.2 🔧 前端优化实现

1. 前端优化工具类

⌨️ entry/src/main/ets/utils/FrontendOptimizationUtil.ets

import optimization from'@ohos.optimization';// 前端优化工具类exportclassFrontendOptimizationUtil{privatestatic instance: FrontendOptimizationUtil |null=null;private optimizationHelper: optimization.OptimizationHelper |null=null;// 单例模式staticgetInstance(): FrontendOptimizationUtil {if(!FrontendOptimizationUtil.instance){ FrontendOptimizationUtil.instance =newFrontendOptimizationUtil();}return FrontendOptimizationUtil.instance;}// 初始化前端优化工具asyncinit():Promise<void>{if(!this.optimizationHelper){this.optimizationHelper = optimization.createOptimizationHelper();}}// 优化前端渲染性能asyncoptimizeFrontendRendering():Promise<optimization.FrontendRenderingOptimizationResult>{if(!this.optimizationHelper){returnnull;}const result =awaitthis.optimizationHelper.optimizeFrontendRendering();return result;}// 优化前端网络请求asyncoptimizeFrontendNetworkRequests():Promise<optimization.FrontendNetworkRequestsOptimizationResult>{if(!this.optimizationHelper){returnnull;}const result =awaitthis.optimizationHelper.optimizeFrontendNetworkRequests();return result;}}

3.3 🔧 后端优化实现

1. 后端优化工具类

⌨️ entry/src/main/ets/utils/BackendOptimizationUtil.ets

import optimization from'@ohos.optimization';// 后端优化工具类exportclassBackendOptimizationUtil{privatestatic instance: BackendOptimizationUtil |null=null;private optimizationHelper: optimization.OptimizationHelper |null=null;// 单例模式staticgetInstance(): BackendOptimizationUtil {if(!BackendOptimizationUtil.instance){ BackendOptimizationUtil.instance =newBackendOptimizationUtil();}return BackendOptimizationUtil.instance;}// 初始化后端优化工具asyncinit():Promise<void>{if(!this.optimizationHelper){this.optimizationHelper = optimization.createOptimizationHelper();}}// 优化后端响应性能asyncoptimizeBackendResponse():Promise<optimization.BackendResponseOptimizationResult>{if(!this.optimizationHelper){returnnull;}const result =awaitthis.optimizationHelper.optimizeBackendResponse();return result;}// 优化后端网络请求asyncoptimizeBackendNetworkRequests():Promise<optimization.BackendNetworkRequestsOptimizationResult>{if(!this.optimizationHelper){returnnull;}const result =awaitthis.optimizationHelper.optimizeBackendNetworkRequests();return result;}}

3.4 🔧 数据库优化实现

1. 数据库优化工具类

⌨️ entry/src/main/ets/utils/DatabaseOptimizationUtil.ets

import optimization from'@ohos.optimization';// 数据库优化工具类exportclassDatabaseOptimizationUtil{privatestatic instance: DatabaseOptimizationUtil |null=null;private optimizationHelper: optimization.OptimizationHelper |null=null;// 单例模式staticgetInstance(): DatabaseOptimizationUtil {if(!DatabaseOptimizationUtil.instance){ DatabaseOptimizationUtil.instance =newDatabaseOptimizationUtil();}return DatabaseOptimizationUtil.instance;}// 初始化数据库优化工具asyncinit():Promise<void>{if(!this.optimizationHelper){this.optimizationHelper = optimization.createOptimizationHelper();}}// 优化数据库查询性能asyncoptimizeDatabaseQueries():Promise<optimization.DatabaseQueriesOptimizationResult>{if(!this.optimizationHelper){returnnull;}const result =awaitthis.optimizationHelper.optimizeDatabaseQueries();return result;}// 优化数据库索引asyncoptimizeDatabaseIndexes():Promise<optimization.DatabaseIndexesOptimizationResult>{if(!this.optimizationHelper){returnnull;}const result =awaitthis.optimizationHelper.optimizeDatabaseIndexes();return result;}}

四、 安全加固实战 🛠️

4.1 实战目标

基于金融场景的安全加固要求,实现以下功能:

  • 代码加固:加固应用的代码;
  • 数据加密:加密用户的敏感数据;
  • 安全审计:记录用户的操作日志。

4.2 🔧 代码加固实现

1. 代码加固工具类

⌨️ entry/src/main/ets/utils/CodeHardeningUtil.ets

import hardening from'@ohos.hardening';// 代码加固工具类exportclassCodeHardeningUtil{privatestatic instance: CodeHardeningUtil |null=null;private hardeningHelper: hardening.HardeningHelper |null=null;// 单例模式staticgetInstance(): CodeHardeningUtil {if(!CodeHardeningUtil.instance){ CodeHardeningUtil.instance =newCodeHardeningUtil();}return CodeHardeningUtil.instance;}// 初始化代码加固工具asyncinit():Promise<void>{if(!this.hardeningHelper){this.hardeningHelper = hardening.createHardeningHelper();}}// 加固应用的代码asynchardenApplicationCode():Promise<hardening.ApplicationCodeHardeningResult>{if(!this.hardeningHelper){returnnull;}const result =awaitthis.hardeningHelper.hardenApplicationCode();return result;}}

4.3 🔧 数据加密实现

1. 数据加密工具类

⌨️ entry/src/main/ets/utils/DataEncryptionUtil.ets

import encryption from'@ohos.encryption';// 数据加密工具类exportclassDataEncryptionUtil{privatestatic instance: DataEncryptionUtil |null=null;private encryptionHelper: encryption.EncryptionHelper |null=null;// 单例模式staticgetInstance(): DataEncryptionUtil {if(!DataEncryptionUtil.instance){ DataEncryptionUtil.instance =newDataEncryptionUtil();}return DataEncryptionUtil.instance;}// 初始化数据加密工具asyncinit():Promise<void>{if(!this.encryptionHelper){this.encryptionHelper = encryption.createEncryptionHelper();}}// 加密用户的敏感数据asyncencryptUserSensitiveData(data:string):Promise<encryption.DataEncryptionResult>{if(!this.encryptionHelper){returnnull;}const result =awaitthis.encryptionHelper.encryptData(data);return result;}}

4.4 🔧 安全审计实现

1. 安全审计工具类

⌨️ entry/src/main/ets/utils/SecurityAuditUtil.ets

import audit from'@ohos.audit';// 安全审计工具类exportclassSecurityAuditUtil{privatestatic instance: SecurityAuditUtil |null=null;private auditHelper: audit.AuditHelper |null=null;// 单例模式staticgetInstance(): SecurityAuditUtil {if(!SecurityAuditUtil.instance){ SecurityAuditUtil.instance =newSecurityAuditUtil();}return SecurityAuditUtil.instance;}// 初始化安全审计工具asyncinit():Promise<void>{if(!this.auditHelper){this.auditHelper = audit.createAuditHelper();}}// 记录用户的操作日志asyncrecordUserOperationLogs(logData: audit.OperationLogData):Promise<audit.UserOperationLogsResult>{if(!this.auditHelper){returnnull;}const result =awaitthis.auditHelper.recordUserOperationLogs(logData);return result;}}

五、 项目配置与部署 🚀

5.1 配置文件修改

1. module.json5修改

在「entry/src/main/module.json5」中添加运维监控、性能优化、安全加固配置:

{"module":{"requestPermissions":[// ...],"abilities":[// ...],"widgets":[// ...],"pages":[// ...]}}

5.2 🔧 项目部署

1. 编译项目

在DevEco Studio中点击「Build」→「Build HAP」,编译项目。

2. 部署到设备

将编译后的HAP文件部署到鸿蒙设备上。

3. 测试金融理财项目
  • 在应用中查看应用监控的效果;
  • 在应用中查看服务器监控的效果;
  • 在应用中查看数据库监控的效果;
  • 在应用中查看前端优化的效果;
  • 在应用中查看后端优化的效果;
  • 在应用中查看数据库优化的效果;
  • 在应用中查看代码加固的效果;
  • 在应用中查看数据加密的效果;
  • 在应用中查看安全审计的效果。

六、 项目运行与效果验证 📱

6.1 效果验证

应用监控:监控应用的运行状态;
服务器监控:监控服务器的资源使用情况;
数据库监控:监控数据库的性能;
前端优化:优化前端的渲染性能;
后端优化:优化后端的响应性能;
数据库优化:优化数据库的查询性能;
代码加固:加固应用的代码;
数据加密:加密用户的敏感数据;
安全审计:记录用户的操作日志。


七、 总结与未来学习路径 🚀

7.1 总结

本文作为《鸿蒙APP开发从入门到精通》的第20篇,完成了:

  • 鸿蒙金融理财项目的运维监控设计与实现;
  • 应用监控、服务器监控、数据库监控的实现;
  • 性能优化在金融场景的核心设计与实现;
  • 前端优化、后端优化、数据库优化的实现;
  • 安全加固在金融场景的设计与实现;
  • 代码加固、数据加密、安全审计的实现。

7.2 未来学习路径

  • 第21篇:鸿蒙金融理财全栈项目——合规审计、风险控制、产品创新优化;
  • 第22篇:鸿蒙金融理财全栈项目——上线与运维、用户反馈、持续迭代。

八、 结语 ✅

恭喜你!你已经完成了《鸿蒙APP开发从入门到精通》的第20篇,掌握了金融理财项目的运维监控、性能优化、安全加固核心技术。

从现在开始,你已具备了开发运维监控完善、性能优化高效、安全加固可靠的金融级应用的能力。未来的2篇文章将逐步优化项目的合规审计、风险控制、产品创新,并最终实现应用的上线与变现。

让我们一起期待鸿蒙生态在金融领域的爆发! 🎉🎉🎉

Read more

Flutter for OpenHarmony:Flutter 三方库 pem — 在鸿蒙应用中优雅处理加密证书与密钥(适配鸿蒙 HarmonyOS Next ohos)

Flutter for OpenHarmony:Flutter 三方库 pem — 在鸿蒙应用中优雅处理加密证书与密钥(适配鸿蒙 HarmonyOS Next ohos)

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net。 Flutter for OpenHarmony:Flutter 三方库 pem — 在鸿蒙应用中优雅处理加密证书与密钥(适配鸿蒙 HarmonyOS Next ohos) 在现代移动应用的网络安全、数字签名及加密传输中,证书的管理是基石。无论是对接 HTTPS 的私有根证书,还是在进行 RSA 加密时加载私钥,我们通常会接触到 PEM (Privacy-Enhanced Mail) 格式的文件——即那些以 -----BEGIN CERTIFICATE----- 开头的文本块。 在 Flutter for OpenHarmony 开发中,如何高效地解析和编码这些 Base64 文本数据?pem 库提供了一套标准的、纯 Dart 的工具包。今天,我们将实战如何利用它在鸿蒙项目里完成安全底座的构建。 一、

By Ne0inhk

Flutter 三方库 flutter_app_packager 的鸿蒙化适配指南 - 在鸿蒙系统上构建极致、自动化、全平台的桌面端安装包打包与工程分发引擎

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 flutter_app_packager 的鸿蒙化适配指南 - 在鸿蒙系统上构建极致、自动化、全平台的桌面端安装包打包与工程分发引擎 在鸿蒙(OpenHarmony)系统的桌面端适配(Ohos PC Mode)以及为鸿蒙应用构建配套的 PC 端管理工具(macOS/Windows/Linux 版辅助工具)时,如何通过一套 Dart 代码或命令行指令,即可瞬间将 Flutter 应用转化为原生的 .dmg, .exe 或 .deb 安装包?flutter_app_packager 为开发者提供了一套工业级的、基于 Dart 的自动化打包封装方案。本文将深入实战其在全平台分发工程中的应用。 前言 什么是

By Ne0inhk
做鸿蒙 App 一个月:10 个 ArkUI 大坑

做鸿蒙 App 一个月:10 个 ArkUI 大坑

子玥酱(掘金 / 知乎 / ZEEKLOG / 简书 同名) 大家好,我是子玥酱,一名长期深耕在一线的前端程序媛 👩‍💻。曾就职于多家知名互联网大厂,目前在某国企负责前端软件研发相关工作,主要聚焦于业务型系统的工程化建设与长期维护。 我持续输出和沉淀前端领域的实战经验,日常关注并分享的技术方向包括前端工程化、小程序、React / RN、Flutter、跨端方案, 在复杂业务落地、组件抽象、性能优化以及多端协作方面积累了大量真实项目经验。 技术方向:前端 / 跨端 / 小程序 / 移动端工程化 内容平台:掘金、知乎、ZEEKLOG、简书 创作特点:实战导向、源码拆解、少空谈多落地 文章状态:长期稳定更新,大量原创输出 我的内容主要围绕 前端技术实战、真实业务踩坑总结、框架与方案选型思考、行业趋势解读 展开。文章不会停留在“API 怎么用”,而是更关注为什么这么设计、在什么场景下容易踩坑、

By Ne0inhk
Flutter for OpenHarmony: Flutter 三方库 openid_client 深度打通鸿蒙应用的单点登录 (SSO)(基于 OpenID Connect 标准)

Flutter for OpenHarmony: Flutter 三方库 openid_client 深度打通鸿蒙应用的单点登录 (SSO)(基于 OpenID Connect 标准)

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net 前言 在现代企业级 OpenHarmony 应用中,为了安全和便捷,往往会使用 OpenID Connect (OIDC) 协议进行统一身份认证。无论是集成 Google 登录、GitHub 登录,还是对接企业内部的 Keycloak、Okta 等身份提供商(IdP),我们都需要一个健壮的库来处理繁杂的 OAuth2 握手流程。 openid_client 是一个功能极其全面的 Dart 实现。它能够自动发现服务器端点(Discovery)、处理 PKCE 流程并安全地交换令牌,是构建高安全级别鸿蒙应用的首选。 一、核心认证流程 OIDC 认证流程通常是通过浏览器重定向完成的,openid_client 充当了流程的指挥官。 身份服务器 (IdP)openid_client鸿蒙

By Ne0inhk