【问题标题】:Flutter: How to securely share data among two separate android apps?Flutter:如何在两个独立的 Android 应用程序之间安全地共享数据?
【发布时间】:2020-05-26 06:39:18
【问题描述】:

我需要在 android 上的两个独立应用之间共享一些特定数据, 最好制作某种共享文件夹,只能由两个应用程序访问。

为什么?我需要两个独立应用之间的单点登录功能。

到目前为止,我一直在使用 JWT 令牌对用户进行身份验证,方法是将它们存储在共享首选项中(存储它们以维护登录)并在用户注销时清除共享首选项(以及点击更改令牌的 api)。

现在我有另一个使用相同令牌的应用程序。

需要什么:您登录一个,另一个自动登录。因此,我的计划是将令牌存储在设备上,而这两个应用程序都可以访问它。

我知道我需要一个活动目录来实现安全的 SSO,但我可以接受目前还没有 100% 的安全性,关于如何在应用程序之间共享数据的问题仍然存在。

【问题讨论】:

  • 我建议,在登录时,在后端用户数据中有一个密钥为isSignedIn,在登录和退出期间更新它。这样,您可以在打开应用程序时检查密钥,无论用户是否在其他设备上登录。让我知道这是否有帮助或您不明白
  • 请检查medium.com/@ranaranvijaysingh9/…共享服务通常用于在两个应用之间共享数据

标签: android flutter dart jwt-auth


【解决方案1】:

我只是给你一个想法,更不用说这个适用于 Android。

  1. 从您的第一个应用程序(主要),使用path_provider 在设备外部存储中创建一个文件(目前,我正在创建一个 .txt 文件),

    Future<void> _createAndWrite() async {
      // Get external directory
      final directory = (await Directory('storage/emulated/0/Sharing Folder').create()).path;
    
      // Create your file
      final file = File('$directory/any_file.txt');
      await file.create();
    
      // Write to the file
      await file.writeAsString('Content to write');
    }
    
  2. 在您的第二个应用程序中,您可以使用以下内容读取文件的内容:

    Future<void> _readFile() async {
      // Get external directory
      final directory = (await Directory('storage/emulated/0/Sharing Folder').create()).path;
    
      // Get the file
      final file = File('$directory/any_file.txt');
    
      // Read it
      final content = await file.readAsString();
    }
    

确保您在这两个应用中都声明了以下权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

【讨论】:

  • 但是设备上的其他应用程序也可以访问这个.txt,对吧?
  • 是的,你是对的。但是您在帖子中提到,目前您不关心安全部分,或者您可能想要创建一种不同类型的文件来允许加密/解密。
猜你喜欢
  • 2016-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多