【问题标题】:Managing a JWT Session with React?使用 React 管理 JWT 会话?
【发布时间】:2018-06-21 19:16:38
【问题描述】:

我有一个关于 JWT 会话的非常笼统的问题。

每当我从数据库中获取某些内容时,我都需要将令牌一起发送以进行身份​​验证。如果令牌过期,我需要检查令牌是否仍然有效。我如何以简单的方式管理它?以便在令牌无效时将用户定向到登录页面?

我是否总是必须发送我的预期操作(例如,获取新闻文章的 GET 请求)并每次发送 SECOND 操作,如果令牌无效,则从 SessionStorage 中删除令牌并将用户重定向到登录屏幕?这似乎是一个糟糕的解决方案,因为它实际上使每一个动作都复杂化了?

所以我的基本问题是,如何以一种好的方式管理 JWT 会话?

【问题讨论】:

    标签: reactjs jwt


    【解决方案1】:

    JWT token 通常自带过期时间,存入本地存储,需要时刷新。

    示例代码:https://auth0.com/docs/quickstart/spa/vanillajs/05-token-renewal

    【讨论】:

    • 谢谢。我已经将它实现到您描述的程度。但现在我问自己如何使用我保存的令牌处理正常请求。您会看到: 1. 我需要在每个请求中包含令牌,这很好 2. 对于每个请求,我必须检查令牌并在令牌过期时将用户发送到登录屏幕(我是否使用.catch() 还是有额外的动作?这似乎有点复杂。
    • 要检查用户会话是否过期,您只需检查过期时间。您可以使用更高阶的组件来自动执行此检查。示例:github.com/AnomalyInnovations/serverless-stack-demo-client/blob/…
    • 谢谢!我花了一些时间才明白你的提议。但据我了解,实现高阶组件并不是真正的检查。它只是询问应用程序状态,如果某个状态表明用户已通过身份验证。要真正检查这是否属实,我仍然需要询问提供令牌的服务器。所以问题仍然是如何执行此检查?即使使用您的解决方案,我也必须将此检查单独附加到每个操作中。
    • 或者是否可以在高阶组件中调度一个动作(Redux)?
    • 令牌检查由您的 API 在服务器端执行
    猜你喜欢
    • 2020-07-25
    • 2021-09-24
    • 2016-12-28
    • 2019-12-28
    • 2020-11-03
    • 1970-01-01
    • 2011-07-03
    • 1970-01-01
    • 2011-04-03
    相关资源
    最近更新 更多