【问题标题】:Is using authReducer with auth token a good practice?将 authReducer 与 auth token 一起使用是一种好习惯吗?
【发布时间】:2019-08-14 15:22:43
【问题描述】:

我一直在阅读有关如何在 React + Redux 应用程序中使用 JWT 的各种教程。

在这些教程中,JWT 通常保存在本地存储中并具有到期日期。这很好。

但是,我遇到了一些使用 authReducer 的示例,该示例从 JWT onload 读取并将布尔状态 isAuthed 设置为 true 或 false。此状态用于处理 UI 更改,例如 AuthedNavbar 或设置私有路由。

我担心的是 authReducer 状态变得陈旧。例如,如果用户保持应用打开,isAuthed 状态仍然为真,即使令牌可能已过期。

(当然,服务器端的路由会被 jwt 保护,因此用户将无法访问资源。但是,他们仍然会在前端有一个糟糕的 UX。)

确实,这与“单一事实来源”的原则相矛盾。身份验证状态在 redux 和本地存储中都设置。

并非所有状态都必须在 redux 中处理。我们使用 react 本地状态并在 redux 之外处理路由器状态。

因此,我认为最好只使用本地存储作为事实来源。

你怎么看?希望得到一些建议!

【问题讨论】:

    标签: reactjs redux jwt


    【解决方案1】:

    不要在存储系统中持久化数据isAuthed。但只有地方使用access_token。然后,即使用户改变它也没有问题。因为您将通过数据库系统检查它并验证 access_token 并从数据库中知道 isAuthed

    【讨论】:

    • 你说的是服务器端吗?我关心的是前端。
    • 是的,在前端你不需要设置isAuthed。如果你这样做了,那就是一个完全的安全漏洞。
    • 很高兴得到一些确认。谢谢!!
    猜你喜欢
    • 1970-01-01
    • 2016-04-14
    • 1970-01-01
    • 1970-01-01
    • 2019-03-06
    • 2013-03-30
    • 2015-09-02
    • 2015-02-18
    • 2016-03-20
    相关资源
    最近更新 更多