Интерфейс Flutter
Сначала войдите, используя имя пользователя / адрес электронной почты и пароль. Вы получите авторизационный токен с сервера, если имя пользователя и пароль верны. Затем используйте этот токен для отправки дополнительных привилегированных запросов на сервер.
Вам не нужно сохранять какие-либо личные данные о пользователе (адрес электронной почты или пароль) на клиенте. Однако вы можете сохранить токен, если не хотите, чтобы пользователь снова входил в систему при следующем использовании приложения. При сохранении токена вы должны использовать опцию безопасного хранения. Плагин flutter_secure_storage использует KeyChain на iOS и KeyStore на Android.
Бэкенд акведука
Вы можете используйте все идентификаторы пользователей на сервере. Хотя я не знаю необходимости передавать их клиенту. В серверной части вы можете запросить идентификатор пользователя, а затем использовать его для получения другой информации из базы данных.
Вот пример из документации :
class NewsFeedController extends ResourceController {
NewsFeedController(this.context);
ManagedContext context;
@Operation.get()
Future<Response> getNewsFeed() async {
var forUserID = request.authorization.ownerID;
var query = Query<Post>(context)
..where((p) => p.author).identifiedBy(forUserID);
return Response.ok(await query.fetch());
}
}
Клиент только прошел в токене. Акведук ищет идентификатор пользователя для вас на основе этого токена. Теперь вы знаете идентификатор пользователя.
В других ваших таблицах может быть столбец для идентификатора пользователя, чтобы только этот пользователь мог сохранять и извлекать свои данные. В приведенном выше примере у сообщений есть автор, а у автора есть идентификатор, то есть идентификатор пользователя.
where((p) => p.author).identifiedBy(forUserID)
эквивалентен
where((p) => p.author.id).equalTo(forUserID)
. Вы можете прочитать об этом в Advanced Queries раздел документации.