我正在尝试找到一种最佳方法,使用户在登录后一直保持登录我的RN应用,直到他们卸载该应用为止。
我正在使用一个Node / Express后端,该后端接受每个请求的JWT,目前我的唯一计划是在登录时发送永不过期的JWT,并使用AsyncStorage永久存储它。
本能地感觉不安全,但是我不是安全和令牌方面的专家。我目前正在使用Expo来启动我的RN应用,但将来我计划“弹出”它,一旦我这样做,我可以使用react-native-keychain来更安全地存储它,但它仍然是一个永不过期的JWT。
我的Spotify应用从不要求我重新登录,所以我知道我要做的并不疯狂。
但是有更好的方法吗?
答案 0 :(得分:3)
您不应长期使用 JWT ,因为如果使用的秘密密钥弱或短,它们很容易被破解。
有些可用的库可能会帮助您跟踪可以破解 JWT 的蛮力持续时间,例如jwt-cracker
,c-jwt-cracker
。
因此,您应该使用 Expo SDK 中已经可用的SecureStore。 IOS 值使用keychain services存储,而 Android 值存储在SharedPreferences中,并用Android's Keystore system加密。
如果 API 中使用令牌的错误,您只需调用重新验证或刷新使用拦截器