我一直在寻找用于在基于反应的应用程序上对用户进行身份验证的解决方案。我遇到了诸如Firebase和JSON Web令牌之类的事情,但是,我似乎找不到服务器和客户端设备之间的会话管理的示例。
对于React/Server关系,我缺少的位是服务器端的一块,与PHP中的$_SESSION
变量相当,可用于存储用户的唯一ID。
=> Client token sent with each data request.
=> Request Checks token and sends data back for that specific user/token pair
我正在寻找某种示例代码,介绍如何在服务器端进行管理,并建议您建议我用来实现它的工具/实现。
我当前不是要实现OAuth2,但是我希望创建自己的登录系统,以便我可以正确理解应用程序的工作原理。
关于OAuth 2.0的注释:
在处理移动应用程序时,我对OAuth 2.0协议有很大的建议,特别是因为刷新令牌架构,这有助于我将用户保持长时间的身份验证,而不会损害自己的安全性。
另外,这是主要社交SDK:Google,Facebook,Twitter和Slack使用的协议。最好的部分:您可以在服务器端使用框外解决方案,例如php的OAuth 2.0服务器和nodejs的OAuth 2.0服务器。
安全地存储数据本机
拥有一组凭据(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);
});