【问题标题】:Authentication and Session management in react-native appsreact-native 应用程序中的身份验证和会话管理
【发布时间】:2018-05-04 03:37:00
【问题描述】:

我一直在寻找在基于 react-native 的应用上对用户进行身份验证的解决方案。我遇到过诸如 Firebase 和 JSON Web 令牌之类的东西,但是,我似乎找不到服务器和客户端设备之间会话管理的示例。

对于反应/服务器关系,我缺少的是服务器端的部分,它相当于 PHP 中的 $_SESSION 变量,可用于存储用户的唯一 ID。

=> Client token sent with each data request.
=> Request Checks token and sends data back for that specific user/token pair

我正在寻找一些关于如何在服务器端进行管理的示例代码,并就您建议我用来实现它的工具/实现提出建议。

我目前不打算实施 oAuth2,因为我希望创建自己的登录系统,以便正确了解应用程序的工作原理。

【问题讨论】:

    标签: reactjs session authentication react-native


    【解决方案1】:

    关于 OAuth 2.0 的注意事项:

    在处理移动应用程序时,我强烈建议使用OAuth 2.0 协议,特别是因为刷新令牌架构,它可以帮助我在不影响用户自身安全的情况下长时间保持用户身份验证。

    此外,这是主要社交 SDK 使用的协议:Google、Facebook、Twitter 和 Slack。最好的部分:您可以在服务器端使用开箱即用的解决方案,例如 OAuth 2.0 Server for PHPOAuth 2.0 Server for NodeJS

    在 React Native 上安全存储数据

    回到 React Native 端,一旦您拥有一组凭据(JWT 或 OAuth 2.0),您就必须安全地存储它们。仅使用框架没有直接的方法,但是有一个很棒的包,叫做react-native-keychain,可以在 iOS 和 Android 平台上处理它。

    将其添加到您的项目中。

    # Using Yarn
    yarn add react-native-keychain
    
    # Or using NPM
    npm install --save react-native-keychain
    

    然后在您的用户进行身份验证的地方使用它。

    import * as Keychain from 'react-native-keychain';
    
    
    // When you have the JWT credentials
    Keychain
      .setGenericPassword("JWT", token)
      .then(function() {
        console.log('Credentials saved successfully!');
      });
    
    
    // When you need to get it from safe storage
    Keychain
      .getGenericPassword()
      .then(function(credentials) {
        console.log('Credentials successfully loaded for user:' + credentials.password);
      }).catch(function(error) {
        console.log('Keychain couldn\'t be accessed! Maybe no value set?', error);
      });
    

    【讨论】:

    • 感谢 Luis,我完全计划稍后引入 OAuth 2.0。但目前处于学习/研究阶段,我很想了解它是如何工作的,所以我不会因为我确定它是如何工作的,所以我不会在没有意识到我创造的巨大漏洞的情况下创造出幸福的东西。
    • 是的,我同意。尽管如此,react native 模块仍将处理您想到的任何类型的令牌或用户名 + 密码凭据。
    • 编辑:为钥匙串添加了“get”示例
    • react-native-keychain 是一个很好的推荐,我没有遇到过。
    • 这里是运行中的节点 OAuth 2 服务器的示例 github.com/pedroetb/node-oauth2-server-example。对于未来的读者。
    猜你喜欢
    • 2019-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-26
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    相关资源
    最近更新 更多