使用Redux+TypeScript实现注销



我有一个登录页面,如果登录成功并返回accessToken,它会重定向到专用/panel页面。我正在使用Redux存储来检查privateRoute组件中的令牌。

我面临的问题:

  • 我想使用退出图标实现从/panel页面注销。如果我试图在组合的减速器中添加另一个减速器,我会得到TypeScript错误。

  • 从退出图标实现注销的最佳方式是什么?我应该使用相同的tokenReducer在交换机中添加LOGOUT机箱吗?需要以某种方式删除存储中的accessToken。对于删除状态中的有效负载,我应该使用筛选器吗?但具体在哪里呢?

  • 由于我使用的是persistent,accessToken保留在本地存储中。因此,即使我重新加载codesandbox(或终止并在localhost中重新运行我的应用程序(,下次,我甚至可以在不登录的情况下访问/panel

代码沙盒:

https://codesandbox.io/s/frosty-shannon-0ivez?file=/src/store/reducers/index.ts

电子邮件:c@c.com

密码:检查

唯一的主要区别是,在原始代码中,我运行的不是手动编写accessToken,而是GraphQL突变。如果登录成功,则返回accessToken并发送如下:

dispatch({ type: 'LOGIN', payload: data.loginEmail.accessToken });

其中loginEmail是突变,accessToken是返回的字符串。如果有人能复制沙盒并指导我,那就太好了。

对于"在哪里存储令牌"部分:正如我们所知,我们通常在cookie中存储sessionID或其他东西作为服务器的标识符,以保持用户的会话。如果我们需要存储一些其他令牌,大多数情况下我们仍然使用cookie,比如laravel和axios如何处理csrf-token:存储在cookie中,在发送xhr请求时在标头中发送,或者将其作为表单中的隐藏输入(这样它就可以与其他表单字段一起发送(。

不要完全理解问题的其他部分,但是,我想说,只要它们干净、可读、易于维护,就可以随心所欲地构建您的redux存储代码。

相关内容

  • 没有找到相关文章

最新更新