页面加载时的JWT身份验证

时间:2019-03-11 18:50:56

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

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

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

我是否正确处理此问题?似乎是糟糕的用户体验,必须等待两次并重定向。有没有解决的办法? JWT不是我想要的实现吗?

1 个答案:

答案 0 :(得分:1)

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

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

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