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

3
最初的回答:
我正在开发一个使用React/Redux作为客户端,NodeJS/Express作为后端的应用。React App运行在3000端口,而后端运行在443端口。
这个React App有3个react-router路由(SignUp、Login和Home,其中最后一个受保护,只能被已授权的用户访问)。
当用户登录时,React App会向后端发送一个带有电子邮件和密码的post请求。服务器在mongoDB数据库中搜索该用户并返回一个带有httpOnly标志的res.cookie。
该cookie是一个jwt,包含一些信息,例如isAdmin标志。如果用户是管理员或不是管理员,客户端Home路由将提供不同的选项。
如何使我的React客户端安全地知道用户是否已经登录,并且用户是否是管理员?
我找到了2种解决方案: 1. 使用localStorage/sessionStorage代替httpOnly cookie,但我被告知这非常不安全。 2. 删除httpOnly标志,以便我的客户端可以读取cookie。我已经测试过这个方法,效果很好,但我担心安全风险。
我感觉我在认证流程中漏掉了什么。谢谢您的提前帮助,对于我糟糕的英语表示歉意。
1个回答

0

我知道的一个解决方案是在后端设置一个终点,客户端可以从这个终点获取用户信息(例如 /users/me)。

基本上,当你的应用程序加载时,你会向这个终点发送一个请求,获取用户信息,然后用户就可以开始访问 React 应用程序中的不同路由。

这种方法的一个缺点是,在开发环境中,每次在前端进行更改时,由于热重载,你将会不断地调用这个后端终点。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接