我正在搜索身份验证。目前,我发现了一些似乎可行的方法,但是我想尽可能地接近实际项目。
以下是一些要点,观察和我所做的事情:
当前我有一个组件,将在其中渲染一个组件或根据Redux中存储的isAuthenticated的值返回a
当用户发送用户名/密码时,我请求一个返回访问令牌的端点。所以我将其保存在LocalStorage(state.auth.access_token)中。
我还使用Axios拦截器,在每个拦截器中,每个请求都会尝试获取令牌并将其添加到请求中,如果令牌被用户修改或无效,则端点将以错误代码响应(访问被拒绝等)我调度了一个操作,该操作将注销(清除access_token)并重定向到“登录”页面
我将redux-saga用于身份验证操作
我认为我应该创建一个Axios实例,并仅向其添加拦截器,因为可能还有其他不需要身份验证的请求
我知道更新access_token是一个好主意,我想我可以在store.subscribe中运行一个函数,每隔5分钟我会在其中获得一个新令牌,并在Redux中更新access_token(这也将具有每次操作发生时将access_token保存在LocalStorage中的回调)
我也不知道将文件和目录放在哪里进行身份验证,因为从根本上讲,它将具有模板(表示页面/路由的组件,例如“ / login /”)将使用的操作。和“ / signup /”)创建帐户。目前,我将文件(actions.js等)置于状态/ auth /
这是我做的一个示例项目,看事情是否解决了。我在后端使用了Django Rest和auth令牌:https://github.com/marcosroot/redux-drf-auth-boilerplate