ReactJs前端和Passport NodeJs后端

3
我正在使用NodeJS、Express和Passport构建一个API RESTful项目。我想在这个应用程序的前端使用ReactJS。我可以使用create-app-react为我的前端创建一个单独的项目,并在保留Passport优点的同时获取我的API吗?或者我应该始终在请求中发送用户信息?或者将我的前端服务放在API相同的服务器上?

你是在问是否可以有一个单独的应用程序来处理API,而不是为React应用程序提供服务吗?当然可以。 - dzm
不,更确切地说是“我能否拥有一个独立的应用程序并从我的API中受益于passport-local初始化?”如果可以的话,每次请求API时我是否应该发送用户数据? - Jason Dill
这取决于你的身份验证方式。如果你使用会话,那么你可以使用Redis存储并在两个Express应用程序之间共享会话。 - dzm
是的,我正在使用会话。 - Jason Dill
1个回答

1

是的,您可以在两个不同的端口上拥有客户端和服务器,并保持Passport的优势。

但是为了做到这一点,在您调用API时,请使用credentials: 'include'

因为默认情况下,fetch不会从服务器发送或接收任何cookie,如果网站依赖于维护用户会话,则会导致未经身份验证的请求(要发送cookie,必须设置凭据init选项)。

示例:

fetch('https://example.com', {
  credentials: 'include'  
})
.then( res => {
  // Some stuff...
})
.catch(err => {
  console.log(err);
});

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