Flutter 中使用 token 进行授权

问题描述 投票:0回答:1

鉴于我没有任何后端服务器,任何人都可以解释使用令牌进行颤振授权的流程。我既不能使用任何网站作为“端点”进行登录或注册,也不能使用 auth0.com 来集成授权和身份验证。我需要实现正常的登录和注册,即Google登录注册不允许。并告诉我当用户通过在应用程序上注册输入信息后如何生成令牌?

我尝试使用 auth0.com 进行集成,但要求我在不使用它的情况下并在“授权令牌”的帮助下实现

android ios flutter flutter-dependencies
1个回答
0
投票

在典型场景中,令牌是由后端服务器在验证用户凭据后生成的。但是,由于您没有后端服务器并且不允许使用任何外部服务,因此您必须在本地模拟此过程。

1)。以下是如何实现这一点的简化流程:

用户注册时,将其凭据(用户名和密码)安全地存储在本地存储中。您可以使用 flutter_secure_storage 之类的包来实现此目的。

2)。为用户生成一个“令牌”。这可以是任何唯一的字符串。在现实场景中,此令牌将是 JWT(JSON Web 令牌)或类似令牌,但对于您的情况,它可能像 UUID 一样简单。

3)。将此令牌存储在本地存储中,与用户的凭据关联。

4)。当用户登录时,根据存储的凭据检查他们输入的凭据。如果它们匹配,则从存储中检索关联的令牌。

5)。使用此令牌“授权”用户在应用程序内执行后续操作。您可以在应用程序运行时将令牌存储在内存中,并检查其是否存在以确定用户是否已“授权”。

这是一个非常基本的示例,说明如何在代码中实现此功能:

    import 'dart:math';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';

final storage = FlutterSecureStorage();

void register(String username, String password) async {
  // Store the user's credentials securely
  await storage.write(key: 'username', value: username);
  await storage.write(key: 'password', value: password);

  // Generate a "token" for the user (in this case, a random number)
  String token = Random().nextInt(1000000).toString();

  // Store the token
  await storage.write(key: 'token', value: token);
}

Future<String> login(String username, String password) async {
  // Retrieve the stored credentials
  String storedUsername = await storage.read(key: 'username');
  String storedPassword = await storage.read(key: 'password');

  // If the entered credentials match the stored ones, retrieve and return the token
  if (username == storedUsername && password == storedPassword) {
    String token = await storage.read(key: 'token');
    return token;
  } else {
    return null;
  }
}

请记住,这是一个非常简化的示例,不适合实际应用程序。在真实的应用程序中,您需要使用安全的后端服务器来处理身份验证和令牌生成。

© www.soinside.com 2019 - 2024. All rights reserved.