我在express后端服务器中进行了访问/刷新(jwt)令牌验证,重新发布逻辑。访问令牌保存在本地存储(客户端),刷新令牌保存在cookie(客户端),redis缓存(服务器)
我发现了一些在前端处理令牌的方法
- 使用axios拦截器
- 条件组件渲染ex)非授权路径:<*组件/>认证路径:<*PrivateRoute><<em>Component/><</em>/PrivateRoute>
但是我对这些组合感到困惑。确切地说,在需要身份验证的路径上进行授权后,应该在什么时候再次验证令牌,以及如何维护令牌授予的权限。
当客户端发出需要认证的请求时,例如修改成员信息或付款,服务器需要验证它。但是,如果他们没有发出需要验证的请求,我可以向他们展示页面中不需要验证的部分。然而,客户端必须在令牌过期后登出,即使没有发出请求。
我的想法是创建一个"PrivateRoute"组件,如果未经过身份验证,则包含整个页面&"Sidebar"组件,该组件可以显示页面的某些部分。侧边栏的某些部分仅在访问令牌有效时呈现,并对每个请求进行验证(将axios拦截器设置为GET, POST "/"要求的)当客户端从服务器得到有效访问令牌的答案时,我将保存"isLogin = true"状态到使用Recoil的会话。如果它们没有有效的访问令牌和刷新令牌,则它们将被重定向,而无需重新颁发访问令牌。当"isLogin = false"时,只显示除侧边栏以外的页面。以下是我的问题:
- 为了在没有用户直接请求的情况下安静地进行身份验证,这是对所有请求验证令牌的正确方法吗?
- 哪种方法更适合我保存"isLogin"状态为Recoil-persist并在收到令牌过期响应后更改状态,还是保存为Recoil并在页面重新加载时重置状态?
每个请求的验证令牌组合和reco- persist以及在接收到令牌过期响应后更改状态将确保当令牌过期时用户立即注销,并且GOOD.您将避免应用程序进行未经授权的操作。