【问题标题】:JWT Authentication on page load页面加载时的 JWT 身份验证
【发布时间】:2019-08-02 03:49:28
【问题描述】:

我在我的节点站点中使用带护照的 JWT 身份验证,我不确定我是否理解这些概念。

假设我是经过身份验证的用户,我的令牌保存在本地存储中。假设我然后导航到 /user 页面,该页面将显示有关我的用户的数据。通常,我会检查用户是否登录,如果没有,他们将被重定向到登录页面。但是在这种情况下,由于我无法从页面请求中发送身份验证令牌,我必须加载我的 /user 页面,然后该页面请求用户数据,如果找不到数据,我将它们重定向到通过 javascript 登录页面。

我的处理方式正确吗?这似乎是一种糟糕的用户体验,不得不等待并重定向两次。有没有解决的办法? JWT 不是我正在寻找的实现吗?

【问题讨论】:

    标签: javascript node.js express jwt passport.js


    【解决方案1】:

    如果要呈现页面服务器端,则应将 JWT 设置为 cookie,而不是使用本地存储。当用户请求页面时,您将能够捕获、验证和使用它。

    但我不得不说现代网络应用程序使用客户端渲染。因此无需将 JWT 存储为 cookie。请求页面时,您将仅收到静态资产,您将通过查询可能响应 401(无效或过期或缺少令牌)的 API 来获取数据。

    您之前似乎使用过服务器端渲染。现在您想使用 JWT,并且您在某处读到了一种常见的做法是将其存储在 LocalStorage 中(这是真的)。现在您正在处理服务器端渲染的应用程序架构,同时尝试混合客户端渲染的应用程序概念。 您并没有犯很大的错误,但您应该考虑完全呈现您的应用程序服务器或客户端(我建议)端。对于第二个选项,谷歌“构建单页应用程序”

    【讨论】:

    • 看,现在我同意你的观点,客户端渲染是要走的路,我几乎在所有地方都使用这个贴图,但不是极端的单页应用程序。我详述的场景确实是我能想到的唯一场景之一,在呈现用户页面之前进行身份验证对我来说很有意义。
    • 在渲染前进行身份验证对于服务器端渲染有意义,而不是客户端渲染。通过客户端渲染,您将使用 JWT 来保护 API。静态资产不相关。
    • 更像是检查他们是否有权访问页面、静态资产等。
    • 一般来说,公共资产是公开的。对特定页面的访问可以通过客户端逻辑和 API 响应解释来处理。无论如何,我再说一遍,如果您对服务器端渲染感兴趣,您可以使用 cookie 存储和传递 JWT,所有优点和缺点
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-22
    • 1970-01-01
    • 2020-03-18
    • 2020-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多