Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 让用户登录以永久响应本机应用程序_Security_Express_React Native_Jwt - Fatal编程技术网

Security 让用户登录以永久响应本机应用程序

Security 让用户登录以永久响应本机应用程序,security,express,react-native,jwt,Security,Express,React Native,Jwt,我正在尝试找出一种最好的方法,让用户在登录后一直登录到我的RN应用程序,直到他们卸载该应用程序为止 我正在使用一个Node/Express后端,它在每个请求中都接受JWT,目前我唯一的计划是在登录时发送一个永不过期的JWT,并使用AsyncStorage永久存储它 这让我本能地感到不安全,但我在安全和代币方面不是专家。目前我正在使用Expo来启动我的RN应用程序,但将来我计划“弹出”它,一旦弹出,我可以使用react native keychain更安全地存储它,但它仍然是一个永不过期的JWT

我正在尝试找出一种最好的方法,让用户在登录后一直登录到我的RN应用程序,直到他们卸载该应用程序为止

我正在使用一个Node/Express后端,它在每个请求中都接受JWT,目前我唯一的计划是在登录时发送一个永不过期的JWT,并使用AsyncStorage永久存储它

这让我本能地感到不安全,但我在安全和代币方面不是专家。目前我正在使用Expo来启动我的RN应用程序,但将来我计划“弹出”它,一旦弹出,我可以使用react native keychain更安全地存储它,但它仍然是一个永不过期的JWT

我的spotify应用程序从不要求我重新登录,所以我知道我所做的并不疯狂


但是有更好的方法吗?

您不应该使用长期JWT,因为如果使用的密钥很弱或很短,它们很容易被破解

有一些库可以帮助您跟踪可以破解JWT的暴力持续时间,例如

因此,您应该使用Expo SDK中已有的。 IOS值使用存储,Android值存储在中,并使用加密


如果使用令牌的API中出现错误,您只需调用拦截器重新验证或刷新即可。好的,所以我不知道Expo有一种安全的存储值的方法,我肯定会切换到该方法。我不明白最后一点,什么是拦截器,我如何“刷新”JWT?拦截器拦截api调用。它在api调用之前或之后捕获
请求
响应
对象。如果api调用失败,您可以调用刷新令牌或重新验证的api。你可以看看啊,响应拦截器,我可以在Axios中这样做,我想我只需要一个端点,它可以接收过期的令牌并发回一个新的令牌。如果它总是从过期的令牌返回一个新的令牌,那么这与永不过期的令牌有何不同?与长期生成的jwt相比,它每次都会基于负载生成一个新的哈希,这将很难破解