如何在React / NodeJS身份验证流程中使用httpOnly cookie获取用户数据

时间:2019-02-23 23:27:29

标签: node.js reactjs authentication cookies

我正在开发一个带有NodeJS / Express后端的React / Redux客户端。 react应用程序在端口3000上运行,后端在端口443上运行。

此React应用程序具有3条react-router路由(“注册”,“登录”和“主页”,最后一条受保护,并且仅经身份验证的用户可以访问)。

当用户登录时,React应用程序使用电子邮件和密码向后端发出发布请求。服务器在mongoDB数据库中搜索用户,并返回带有res.cookie标志的httpOnly

cookie是一个包含一些信息的jwt,例如isAdmin标志。客户端中的“本地”路由具有不同的选项,具体取决于用户是否为管理员。

我的React客户端如何安全地知道用户是否已登录以及该用户是否为管理员?

我找到了2个解决方案:

  • 使用localStorage / sessionStorage代替httpOnly cookie,但是我被告知这是非常不安全的。
  • 删除httpOnly标志,以便我的客户端可以读取cookie。我已经对此进行了测试,并且效果很好,但是同样,安全风险是我感到不安的。

我感觉到身份验证流程中缺少某些内容。 在此先感谢您,我的英语不好。

1 个答案:

答案 0 :(得分:0)

我知道的一种解决方案是在后端上有一个端点,客户端可以在该端点上检索用户信息(例如/ users / me)。

基本上,在安装应用程序时,您将向该端点发送请求,获取用户信息,然后用户可以开始访问React应用程序中的不同路由。

这种方法的一个缺点是,当您处于开发环境中时,由于对前端进行的每项更改,您都将由于热重载而对该后端端点执行ping操作。