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

【一起学Rust | Tauri2.0框架】基于 Rust 与 Tauri 2.0 框架实现生物识别(指纹识别)应用

前言

Tauri,作为一个新兴的跨平台应用开发框架,允许开发者使用 Web 前端技术构建界面,并利用 Rust 的高性能和安全性编写后端逻辑。这种架构巧妙地结合了 Web 的灵活性和原生应用的性能,为开发者提供了一种构建高效、跨平台应用的全新选择。

而生物识别技术,如指纹识别、面部识别等,则为应用安全提供了更高级别的保障。将生物识别技术集成到 Tauri 应用中,可以提升用户体验,增强应用安全性。试想一下,用户只需轻触指纹传感器或面对摄像头,即可轻松登录应用,无需再记忆复杂的密码,这将是多么便捷和安全!

Tauri 提供了一个名为 tauri-plugin-biometric 的插件,专门用于在应用中集成生物识别功能。该插件利用操作系统提供的生物识别 API,为开发者提供了一套简洁易用的接口,可以方便地在应用中实现指纹识别、面部识别等功能。

通过 tauri-plugin-biometric 插件,开发者可以轻松地检查设备是否支持生物识别,获取支持的生物识别类型,并发起生物识别认证请求。插件会处理与操作系统的交互,并将认证结果返回给应用。开发者只需根据认证结果进行相应的处理,例如允许用户登录或拒绝访问。

当然,在使用生物识别技术时,安全性是至关重要的。tauri-plugin-biometric 插件遵循安全最佳实践,确保用户生物特征数据的安全。所有生物特征数据都由操作系统安全地存储和管理,应用无法直接访问这些数据。插件仅用于发起认证请求和接收认证结果,不会存储任何敏感信息。

此外,Tauri 的跨平台特性使得开发者可以一次编写代码,即可在 Windows、macOS、Linux、iOS 和 Android 等多个平台上运行生物识别功能。这大大简化了开发流程,降低了开发成本。

本文将介绍如何使用 Rust 编程语言和 Tauri 2.0 框架开发一个指纹识别应用。通过本文,你将了解如何利用 Rust 的高性能和 Tauri 的跨平台特性,构建一个高效、安全的指纹识别系统。


文章目录

  • 前言
  • 一、环境准备
  • 二、安装插件
    • 2.1 安装依赖
    • 2.2 插件配置
  • 三、使用插件
    • 3.1 验证状态
    • 3.2 发起识别
  • 总结


一、环境准备

首先确定你是否满足以下条件,再看是否适合你的需求:

  • [ x ] Rust版本大于1.77.2
  • [ x ] 插件只允许在android,ios中使用

如果两个条件全部满足,那么你可以继续往下看了。

二、安装插件

2.1 安装依赖

安装依赖非常简单,你只需要执行以下命令即可

pnpm tauri add biometric

如果你想要手动安装,那也是可以的,比如

进入src-tauri,运行以下命令添加依赖

cargo add tauri-plugin-biometric --target 'cfg(any(target_os = "android", target_os = "ios"))'

然后修改你的src-tauri/src/lib.rs

#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
    tauri::Builder::default()
        .setup(|app| {
        // 添加下面两行
            #[cfg(mobile)]
            app.handle().plugin(tauri_plugin_biometric::Builder::new().build());
            Ok(())
        })
        .run(tauri::generate_context!())
        .expect("error while running tauri application");
}

最后安装前端部分

pnpm add @tauri-apps/plugin-biometric

2.2 插件配置

插件的所有API都必须经过开启权限才可以使用的,首先你需要找到src-tauri/capabilities/default.json,然后进行修改

{
  "$schema": "../gen/schemas/mobile-schema.json",
  "identifier": "main-capability",
  "description": "Capability for the main window",
  "windows": ["main"],
  "permissions": [
    // ... 代表你以前的代码
    "biometric:default"
    "biometric:allow-authenticate",
    "biometric:allow-status"
  ]
}

三、使用插件

该插件使你能够验证设备上的生物识别验证的可用性,提示用户进行生物识别身份验证,并检查结果以确定身份验证是否成功。

3.1 验证状态

你可以检查生物识别身份验证的状态,包括其可用性和支持的生物识别验证方法的类型。

在前端你可以这样用

import { checkStatus } from '@tauri-apps/plugin-biometric';

const status = await checkStatus();
if (status.isAvailable) {
  console.log('生物识别验证通过');
} else {
  console.log(
    '生物识别验证失败,原因: ' + status.error
  );
}

或者在Rust中也可使用

use tauri_plugin_biometric::BiometricExt;

fn check_biometric(app_handle: tauri::AppHandle) {
    let status = app_handle.biometric().status().unwrap();
    if status.is_available {
        println!("生物识别验证通过");
    } else {
        println!("生物识别验证失败,原因: {}", status.error.unwrap());
    }
}

3.2 发起识别

要提示用户进行生物特征识别验证,请使用Authenticate()方法。

在你的前端中可以这样使用插件

import { authenticate } from '@tauri-apps/plugin-biometric';

const options = {
  // 如果你希望用户能够使用手机密码进行身份验证,请设置TRUE
  allowDeviceCredential: false,
  cancelTitle: "用户已取消生物识别验证",

  // 只支持 iOS
  fallbackTitle: '用户生物识别验证失败',

  // 只支持 Android
  title: 'Tauri 生物识别验证',
  subtitle: '授权访问Tauri功能',
  confirmationRequired: true,
};

try {
  await authenticate('这个功能需要授权后使用', options);
  console.log(
    '授权成功,你现在已经可以使用该功能了。'
  );
} catch (err) {
  console.log('用户生物识别授权失败,原因: ' + err.message);
}

或者在后端实现也是可以的

use tauri_plugin_biometric::{BiometricExt, AuthOptions};

fn bio_auth(app_handle: tauri::AppHandle) {

    let options = AuthOptions {
        // 如果你希望用户能够使用手机密码进行身份验证,请设置TRUE
        allow_device_credential:false,
        cancel_title: Some("用户已取消生物识别验证".to_string()),

        // 只支持 iOS
        fallback_title: Some("用户生物识别验证失败".to_string()),

        // 只支持 Android
        title: Some("Tauri 生物识别验证".to_string()),
        subtitle: Some("授权访问Tauri功能".to_string()),
        confirmation_required: Some(true),
    };

    // 如果用户生物身份验证成功,返回 Result::Ok()
    // 否则返回 Result::Error()
    match app_handle.biometric().authenticate("这个功能需要授权后使用".to_string(), options) {
        Ok(_) => {
            println!("授权成功,你现在已经可以使用该功能了。");
        }
        Err(e) => {
            println!("用户生物识别授权失败,原因 : {e}");
        }
    }
}

总结

在这篇文章中,我详细介绍了如何利用 Rust 和 Tauri 2.0 框架来构建一个跨平台的指纹识别应用。我重点讲解了 Tauri 的 Biometric 插件的使用,包括安装方法、权限配置以及核心 API 的调用。

为了方便大家理解,我提供了丰富的代码示例,涵盖了前端 JavaScript 和后端 Rust 的实现,并对 checkStatusauthenticate 方法进行了详细的说明,包括如何配置 AuthOptions 来定制验证流程。

需要注意的是,目前这个方案只适用于 Android 和 iOS 平台,并且需要 Rust 版本大于 1.77.2。

希望这篇文章能够帮助大家快速上手生物识别应用的开发,并利用 Rust 和 Tauri 的优势构建高效、安全的应用。 也欢迎大家在评论区提出问题和建议,一起交流学习! 后续我可能会更新文章,加入更多平台的支持和更高级的功能,敬请期待!


http://www.kler.cn/a/591302.html

相关文章:

  • Arch Linux高性能数据处理优化指南
  • C++ 学习笔记(三)—— 入门+类和对象
  • 【PDF识别】总结PDF文本内容与表格提取的方法
  • 招聘信息|基于SprinBoot+vue的招聘信息管理系统(源码+数据库+文档)
  • 如何才能避免漏测事故的发生?
  • 《港口危货储存单位主要安全管理人员》考试资料及答案解析
  • C# WPF编程-RepeatButton
  • opencv + opengl显示摄像头视频流
  • PyCharm 2019.1.3使用python3.9创建虚拟环境setuptools-40.8.0报错处理
  • 单臂路由+VLANIF
  • 【论文阅读】FairCLIP - 医疗视觉语言学习中的公平性提升
  • 实战设计模式之解释器模式
  • DolphinScheduler工作流任务调度集群部署
  • 联邦学习(Federated Learning)
  • 深度学习 Deep Learning 第2章 线性代数
  • Vue渲染函数 - render 函数
  • Business processes A bridge to SAP and a guide to SAP TS410 certification
  • Python简单爬虫实践案例
  • vulhub-Billu-b0x攻略
  • 消融实验(Ablation Study)