Пользовательская аутентификация FlutterFlow с использованием Logto
Узнайте, как реализовать пользовательскую аутентификацию в вашем приложении Flutter с использованием Logto Flutter SDK.
Введение
FlutterFlow - это платформа с низким кодом, которая позволяет создавать приложения Flutter визуально. Она предоставляет интерфейс перетаскивания для проектирования интерфейса приложения и генерирует соответствующий код Flutter. Согласно официальной документации, платформа предоставляет три различных варианта интеграции аутентификации:
- Через встроенную аутентификацию Firebase
- Через встроенную аутентификацию Supabase
- Пользовательская аутентификация
Для первых двух FlutterFlow предлагает бесшовную интеграцию с Firebase и Supabase. Нужно настроить проект Firebase или Supabase и настроить параметры аутентификации в FlutterFlow. Однако, если вы хотите использовать другого провайдера аутентификации, вам придется самостоятельно реализовать логику аутентификации.
Что касается пользовательской аутентификации, FlutterFlow предоставляет возможность интеграции с любым провайдером аутентификации, полагаясь на один кастомный API аутентификации.
Однако прямой обмен учетными данными между клиентом и сервером аутентификации не рекомендуется согласно современным стандартам безопасности. Вместо этого следует использовать безопасный процесс аутентификации, такой как OAuth 2.0 или OpenID Connect (OIDC), чтобы аутентифицировать пользователей. Для современных провайдеров удостоверений (IdP), основанных на OAuth 2.0 или OIDC, таких как Auth0, Okta и Logto, тип гранта «пароль ресурсообладателя» (ROPC) не рекомендуется или запрещен по соображениям безопасности. Подробнее см. Устаревший тип гранта ropc.
Стандартный процесс аутентификации OAuth 2.0 или OIDC включает несколько шагов и перенаправлений между клиентским приложением, сервером авторизации и браузером пользователя. В этом посте мы покажем, как кастомизировать класс CustomAuthManager
во FlutterFlow с использованием Logto Flutter SDK для реализации безопасного процесса аутентификации в вашем приложении FlutterFlow.
Необходимые условия
- Аккаунт в Logto Cloud или самостоятельный экземпляр Logto. (Посмотрите руководство ⚡ Начало работы, чтобы создать экземпляр Logto)
- Приложение Flutter, созданное с использованием FlutterFlow.
- Зарегистрируйте приложение Flutter в вашей консоли Logto.
- Репозиторий GitHub для управления вашим пользовательским кодом в FlutterFlow.
- Обратитесь к нашему руководству по интеграции Flutter SDK здесь.
Шаг 1: Включите управление пользовательским кодом в FlutterFlow
Для того чтобы кастомизировать класс CustomAuthManager
, необходимо включить функцию пользовательского кода в FlutterFlow. Следуйте руководству Управление пользовательским кодом в GitHub, чтобы связать и синхронизировать ваш проект FlutterFlow с GitHub.
После этого у вас будет три разные ветви в вашем репозитории GitHub FlutterFlow:
main
: Главная ветка для проекта Flutter. Вам понадобится эта ветка для развертывания вашего проекта.flutterflow
: Ветка, в которую FlutterFlow синхронизирует изменения из редактора пользовательского интерфейса в ваш код.develop
: Ветка, в которой вы можете изменять ваш пользовательский код.
Шаг 2: Спроектируйте и создайте ваш пользовательский UI-поток в FlutterFlow
Создайте ваши страницы
Создайте пользовательский интерфейс в FlutterFlow. Вы можете следовать документации FlutterFlow, чтобы создать интерфейс на основе ваших требований. В этом учебном пособии, для минимального требования, мы предположим, что у вас есть две страницы:
- Простая
HomePage
со кнопкой входа. (Форма входа не требуется, пользовательский процесс аутентификации осуществляется на стороне Logto. Пожалуйста, ознакомьтесь с руководством по кастомизации sie для получения более подробной информации.)
- Страница профиля
user
для отображения информации о пользователе и кнопки выхода из системы.
Включите пользовательскую аутентификацию в FlutterFlow
Перейдите в Настройки приложения
- Аутентификация
и включите пользовательскую аутентификацию. Это создаст класс CustomAuthManager
и связанные файлы в вашем проекте FlutterFlow.