【一起学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 的实现,并对 checkStatus
和 authenticate
方法进行了详细的说明,包括如何配置 AuthOptions
来定制验证流程。
需要注意的是,目前这个方案只适用于 Android 和 iOS 平台,并且需要 Rust 版本大于 1.77.2。
希望这篇文章能够帮助大家快速上手生物识别应用的开发,并利用 Rust 和 Tauri 的优势构建高效、安全的应用。 也欢迎大家在评论区提出问题和建议,一起交流学习! 后续我可能会更新文章,加入更多平台的支持和更高级的功能,敬请期待!