最初的回答:
我正在开发一个使用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。我已经测试过这个方法,效果很好,但我担心安全风险。
我感觉我在认证流程中漏掉了什么。谢谢您的提前帮助,对于我糟糕的英语表示歉意。
我正在开发一个使用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。我已经测试过这个方法,效果很好,但我担心安全风险。
我感觉我在认证流程中漏掉了什么。谢谢您的提前帮助,对于我糟糕的英语表示歉意。