Локальная аутентификация Flutter с использованием биометрии – Face ID, Touch ID, отпечаток пальца
По мере роста сообщества Flutter оно также создает множество библиотек для поддержки встроенной функциональности. Когда отпечатки пальцев пользователя, характеристики лица или голос используются для аутентификации его идентификации, это называется биометрической аутентификацией. Давайте посмотрим, как вы можете реализовать локальную аутентификацию для биометрии во Flutter.
Почти каждый телефон, представленный сегодня на рынке, имеет какой-либо вид биометрической аутентификации. Нам больше не нужно вводить пароль, так как мы можем просто нажать на наши отпечатки пальцев, чтобы подтвердить вашу личность. Аутентификация по отпечаткам пальцев в приложениях Flutter - тема этого эссе.
Импорт пакета local_auth
Во-первых, мы включаем пакет local_auth в наш файл pubspec.yaml, чтобы мы могли использовать его в нашем проекте
dependencies:
flutter:
sdk: flutter
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^1.0.5
local_auth: ^2.1.2
local_auth_android: ^1.0.14
local_auth_ios: ^1.0.10
Использование local_auth
Этот плагин Flutter позволяет нам аутентифицировать пользователей локально на устройстве с помощью этой функции.
Чтобы проверить, доступна ли локальная аутентификация на этом устройстве, вызовите canCheckBiometrics
(если вам нужна поддержка биометрии) и/или isDeviceSupported()
(если вам просто нужна аутентификация на уровне устройства):
final LocalAuthentication auth = LocalAuthentication();
final bool canAuthenticateWithBiometrics = await auth.canCheckBiometrics;
final bool canAuthenticate =
canAuthenticateWithBiometrics || await auth.isDeviceSupported();
Не забудьте импортировать пакет в свой файл следующим образом:
import 'package:local_auth/local_auth.dart';
В настоящее время реализованы следующие биометрические типы:
- BiometricType.face
- BiometricType.fingerprint
- BiometricType.weak
- BiometricType.strong
Зарегистрированные биометрические данные
canCheckBiometrics
указывает, доступна ли аппаратная поддержка, а не зарегистрированы ли на устройстве какие-либо биометрические данные. Чтобы получить список зарегистрированных биометрических данных, вызовите getAvailableBiometrics()
.
Типы зависят от устройства и платформы, и другие типы могут быть добавлены в будущем, поэтому, когда это возможно, вы не должны полагаться на определенные биометрические типы и только проверять, зарегистрирована ли какая-либо биометрия:
final List<BiometricType> availableBiometrics =
await auth.getAvailableBiometrics();
if (availableBiometrics.isNotEmpty) {
// Some biometrics are enrolled.
}
if (availableBiometrics.contains(BiometricType.strong) ||
availableBiometrics.contains(BiometricType.face)) {
// Specific types of biometrics are available.
// Use checks like this with caution!
}
Метод authentication()
по возможности использует биометрическую аутентификацию, но также допускает откат к pin, шаблону или коду доступа.