如何在React Native和Redux应用程序中处理JWT令牌到期

时间:2019-04-22 08:00:10

标签: javascript reactjs react-native jwt axios

我对实施JWT相当陌生。在实施JWT时,我有几个问题。我正在使用axios发出请求。 用户登录或注册时。我得到一个accessToken,它将在几天后过期。我没有refreshToken,因为我认为后端是建立在django rest框架上的。

现在,如果我在请求中收到状态码401,则尝试检查令牌是否已过期,如果是,则刷新accessToken,但有时甚至刷新令牌api也会返回400,表明该令牌也是已过期,此时我需要用户注销。

我认为这是糟糕的用户体验,为什么我们不能使用旧令牌刷新令牌。有没有办法防止它过期?谁能指出一个通过正确实现axios拦截器解决以下问题的示例?

2 个答案:

答案 0 :(得分:1)

由于您使用的是Django rest框架,请考虑对JWT令牌使用Djoser,然后djoser从后端向您发送访问和刷新令牌。后端准备工作结束后,请按照此simple article进行操作,以从React Native自动刷新和访问令牌。希望对您有帮助。

答案 1 :(得分:0)

您可以创建一个永不过期的令牌,但是出于安全原因,这不是一个好主意。如果令牌被盗,那么有人总是可以访问用户的数据。您可以在exp声明中设置到期日期。在此处阅读更多信息:https://gist.github.com/soulmachine/b368ce7292ddd7f91c15accccc02b8df