在通用的React应用程序上存储JWT令牌

时间:2018-06-17 21:28:31

标签: reactjs express jwt passport.js

我有一个使用Redux,React-routerV4,MySQL和Sequelize的通用React应用程序。我正在努力保护一些路线,并且我正在使用Passport,就像在本教程中一样:https://hptechblogs.com/using-json-web-token-react/

通常建议在网络浏览器上存储JWT,因为每次加载路径时都不必向数据库发出请求。但对于使用SSR的应用程序,这没有用,因为服务器加载的组件无法访问LocalStorageSessionStorage

我在考虑如果在通用应用程序的情况下将令牌存储在cookie中更好......任何想法?

谢谢!

1 个答案:

答案 0 :(得分:0)

如果您需要SSR支持,存储在cookie中是更好的选择。或者,如果您不介意在服务器端序列化到磁盘,则可以使用node-localstorage之类的库。

但是,将JWT存储在本地存储或cookie中是一个坏主意 - 因为您基本上存储用户名/密码。如果这是一个问题,那么您应该创建会话标识符(或类似的),然后将其存储在带有httpOnly标志的签名 cookie中,然后使用该标识符访问敏感信息服务器