我在我的 react-native 应用程序中使用 JSON Web Tokens 进行身份验证。当用户登录时,会创建一个令牌并将其发送给用户以存储在本地存储中。令牌有效期为 24 小时。每当调用服务器(nodejs)时,都会在标头中发送令牌。
问题是,24 小时后,用户必须重新登录。我不想要这个,所以我开始寻找解决方案。我找到的解决方案:刷新令牌。
到目前为止我的方法。如果我做错了什么,请纠正我。
1) 用户登录。一个auth token和一个refresh token都被发送给用户存储在本地存储中。(这样够安全吗?)
2) 用户想要更改他的个人资料。我使用标头中的身份验证令牌向服务器发送请求。
3) 服务器收到授权令牌。如果身份验证令牌仍然有效,请执行您必须做的任何事情。如果身份验证令牌已过期,请检查用户是否有刷新令牌(仍然有效)。在这一点上,我被困住了。我是否应该从服务器向用户发送一个新请求,询问“你有刷新令牌吗?” 如果是这样,将此刷新令牌发送到服务器以创建新的身份验证令牌?
我的问题如下:
假设用户想要从列表中获取最后 10 条消息。带有身份验证令牌的请求被发送到服务器。
=> 身份验证令牌有效:响应是 10 条消息的列表
=> 身份验证令牌无效:响应是从服务器到客户端的刷新令牌的新请求
这是两种不同的反应。这不会弄乱我在客户端的代码吗?我该如何处理?
另一种方法是在每个请求中发送身份验证令牌和刷新令牌。但这有意义吗?