使用Passport的Express server、ReactJS和中继应用程序的身份验证策略
在构建我的ReactJS应用程序几个星期后,是时候向它添加身份验证了。这让我很困惑 我的申请包括:使用Passport的Express server、ReactJS和中继应用程序的身份验证策略,reactjs,express,authentication,relayjs,passport.js,Reactjs,Express,Authentication,Relayjs,Passport.js,在构建我的ReactJS应用程序几个星期后,是时候向它添加身份验证了。这让我很困惑 我的申请包括: 通过端口3001上的mongoose/MongoDB运行GraphQL服务器的Express服务器 客户端ReactJS+中继应用程序,带有React路由器V4,在端口3000上运行 我有一个脚本,可以同时启动服务器和客户端(npmstart),这使它可以正常工作。服务器已加载,客户端已加载,浏览器在端口3000打开,并在端口3001的服务器上使用RelayJs请求GraphQL数据。都很好
- 通过端口3001上的mongoose/MongoDB运行GraphQL服务器的Express服务器李>
- 客户端ReactJS+中继应用程序,带有React路由器V4,在端口3000上运行
npmstart
),这使它可以正常工作。服务器已加载,客户端已加载,浏览器在端口3000打开,并在端口3001的服务器上使用RelayJs请求GraphQL数据。都很好
我过去使用过Passport身份验证,使用的是LocalStrategy。Passport进入数据库,检查用户名和密码,并使用express中间件中的路由器处理请求。工作正常,但在服务器端,而不是客户端
我的目标是让用户启动客户端应用程序(今天将浏览器指向端口3000),然后:
- 如果未经授权,它将被重定向到登录页面
- 如果经过身份验证,用户将被重定向到应用程序
- 使用“记住我”用户可以在不登录的情况下返回应用程序(在同一浏览器中使用一段时间-一整天)
- 如果用户不记得用户名/密码,将要求重置,并通过电子邮件发送新凭据
create-react-app
,弹出时嵌入了webpack-dev-server(事实上,在弹出后,我不太理解客户端脚本中的内容)。简言之,令人困惑,需要改变我的架构
b) 将Passport添加到我的应用程序中。这将不起作用,因为密码是要在节点(服务器端)上运行的生成。我不知道这是否可行,也不知道如何做到
在这些“不清晰和混乱”的架构之后,我不知道该怎么做 您可以这样做:
- 在express中创建用于登录的路由
- 在该路线上使用passport中间件
- 在React中创建登录表单
- 通过POST将表单凭证数据发送到该快速登录路径
- 在passport验证用户名和密码是否正确后,它会将您发送回一切正常,您可以将用户发送到您的应用程序
我使用类似的设置,如果您需要,我可以提供更多信息;) 您可以这样做:
- 在express中创建用于登录的路由
- 在该路线上使用passport中间件
- 在React中创建登录表单
- 通过POST将表单凭证数据发送到该快速登录路径
- 在passport验证用户名和密码是否正确后,它会将您发送回一切正常,您可以将用户发送到您的应用程序
我使用类似的设置,如果您需要,我可以提供更多信息;) 请提供更多信息@AndrijaWell,我正在使用JWT和Passport。将有效凭据发送到
/login
路由后,Express返回令牌,我将该令牌存储在客户端的本地存储中。我在React应用程序在/GraphQL
路径上发出的每个GraphQL请求的标题中都包含了这个令牌,这基本上就是它的全部内容。请提供更多信息@AndrijaWell,我正在使用JWT和Passport。将有效凭据发送到/login
路由后,Express返回令牌,我将该令牌存储在客户端的本地存储中。我在应用程序在/GraphQL
路由上做出的每个GraphQL请求的头中都包含了这个令牌,这基本上就是它的全部内容。