【发布时间】:2018-12-20 13:40:47
【问题描述】:
我使用 Reactjs 构建了一个 Web 应用程序。我使用路由器和 redux 进行身份验证的状态管理。一切正常,但问题在于 api 调用。在用户登录并调用...服务后,我想检查服务的响应是否包含任何令牌问题(例如:令牌已过期)。如果存在令牌问题,我想使令牌无效(删除它)并将用户发送回登录页面并显示错误消息。现在,如果我在我的 redux action/reducer 中执行所有 api 调用,我就可以做到这一点。但我不确定是否必须为每次调用都实现 redux,因为我不需要其他组件中的数据。而且在 redux 中实现所有服务也很耗时,需要大量代码。
我将项目复制到 stackblitz。
https://stackblitz.com/edit/react-auth?file=index.js
场景很简单。单击登录,您就在应用程序中。该应用程序会自动调用服务并获得响应。如果您将 URL 更改为 api.js 中的错误 URL,则此服务将给出“40x”响应。当我收到此响应时,我想将用户重定向到登录页面。
有什么帮助/建议吗?
谢谢。
【问题讨论】:
-
您应该在服务器端处理令牌:如果身份验证令牌有问题,服务器不应发送 404 而是发送 401。原因是因为 404 并不意味着令牌无效,而是意味着 URL 未找到,请检查 this list。你用什么在客户端上调用你的 api?
-
其实 '404' 只是一个示例。如何在 401 上重定向用户?
-
我在答案中添加了axios的代码
标签: reactjs redux react-router react-redux