NodeJS|SailsJS|PassportJS AJAX 身份验证:连续请求数据
NodeJS|SailsJS|PassportJS AJAX Authentication: Making Successive Requests for Data
连续请求数据
TL;DR
身份验证后,我无法从我的应用程序的前端请求数据 -- 但只有通过服务器端视图和 Postman,我才能在登录后进行后续数据请求,或者通过在 Postman 中对我的用户进行身份验证,然后进行我的应用程序中的数据请求。
首先,我是服务器端的新手。
我有一个用于 REST 的 SailsJS 后端。创建和验证用户,使用 LocalStrategy,工作正常——实际上,即使后续的数据请求也工作正常——但不是通过我的应用程序 AJAX。
我可以使用Postman或服务器端视图来访问数据,例如/list
;在我的应用程序中进行身份验证后发出请求不起作用 -- UNLESS 我跳回 Postman 并登录,然后跳回我的应用程序并重新发出请求。
我确实注意到我的 set-cookie
在我的应用程序中的第一个身份验证请求和 /list
的请求是不同的。
如有必要,我可以展示一些代码,但这似乎是我在发出经过身份验证的 AJAX 请求时缺少一个非常高级的基本概念。
编辑:
我的前端 是 在不同的域上 -- Sails 在 localhost:1337
上运行,而我的 UI 在 localhost:8100
.
上运行
这是我的 /api/config/cors.js
的样子:
module.exports.cors = {
allRoutes: true,
origin: '*',
credentials: true,
// methods: 'GET, POST, PUT, DELETE, OPTIONS, HEAD',
// headers: 'content-type'
};
我在前端使用 angular,后续请求使用 withCredentials: true
-- 我是否也需要将其添加到登录请求中?我还必须在请求中发送 username/email 吗?
如何在登录后允许所有后续数据请求进行身份验证?
如果您的前端应用程序与后端应用程序的来源不同 the AJAX requests will not include the session cookie 默认情况下。
如果你是using jQuery:
$.ajax({
url: a_cross_domain_url,
xhrFields: {
withCredentials: true
}
});
此选项必须用于所有 AJAX 请求,以便服务器可以将它们视为属于同一会话。
您还必须 configure the server side 允许 CORS 请求。
连续请求数据
TL;DR
身份验证后,我无法从我的应用程序的前端请求数据 -- 但只有通过服务器端视图和 Postman,我才能在登录后进行后续数据请求,或者通过在 Postman 中对我的用户进行身份验证,然后进行我的应用程序中的数据请求。
首先,我是服务器端的新手。
我有一个用于 REST 的 SailsJS 后端。创建和验证用户,使用 LocalStrategy,工作正常——实际上,即使后续的数据请求也工作正常——但不是通过我的应用程序 AJAX。
我可以使用Postman或服务器端视图来访问数据,例如/list
;在我的应用程序中进行身份验证后发出请求不起作用 -- UNLESS 我跳回 Postman 并登录,然后跳回我的应用程序并重新发出请求。
我确实注意到我的 set-cookie
在我的应用程序中的第一个身份验证请求和 /list
的请求是不同的。
如有必要,我可以展示一些代码,但这似乎是我在发出经过身份验证的 AJAX 请求时缺少一个非常高级的基本概念。
编辑:
我的前端 是 在不同的域上 -- Sails 在 localhost:1337
上运行,而我的 UI 在 localhost:8100
.
这是我的 /api/config/cors.js
的样子:
module.exports.cors = {
allRoutes: true,
origin: '*',
credentials: true,
// methods: 'GET, POST, PUT, DELETE, OPTIONS, HEAD',
// headers: 'content-type'
};
我在前端使用 angular,后续请求使用 withCredentials: true
-- 我是否也需要将其添加到登录请求中?我还必须在请求中发送 username/email 吗?
如何在登录后允许所有后续数据请求进行身份验证?
如果您的前端应用程序与后端应用程序的来源不同 the AJAX requests will not include the session cookie 默认情况下。
如果你是using jQuery:
$.ajax({
url: a_cross_domain_url,
xhrFields: {
withCredentials: true
}
});
此选项必须用于所有 AJAX 请求,以便服务器可以将它们视为属于同一会话。
您还必须 configure the server side 允许 CORS 请求。