我对请求模块使用了node.JS。节点请求如何处理会话
我的问题是,我需要在每个请求上对用户进行身份验证,因为会话在.then((response) => {})
块之外被销毁。
如何将创建的会话保存在类中供以后使用?
我尝试了一切都没有成功。
下面是一个不工作代码片断
login() {
const getLoginUrl = 'https://www.demourl.com/'
const postLoginUrl = 'https://www.demourl.com/account/login/'
rp({
url: getLoginUrl,
jar: this.cookieJar,
method: 'GET'
})
.then((body) => {
var csrftoken = this.cookieJar.getCookies(getLoginUrl)[1].toString().split('=')[1].split(';')[0];
var args = {
url: postLoginUrl,
json: true,
method: 'POST',
data: {
username: this.username,
password: this.password
},
headers: {
'method': 'POST',
'path': '/account/login/',
'cookie': 'csrftoken=' + csrftoken,
},
jar: this.cookieJar,
resolveWithFullResponse: true
}
rp(args)
.then((response) => {
//Here is a valid session
//But how can I use this session in different functions?
console.log('Post demourl.com/account/login success');
})
.catch((error) => {
console.log('Post demourl.com/account/login error: ', error);
});
})
.catch((error) => {
console.log('Get demourl.com error: ', error);
});
}
如果您正在使用:
如果你只在你的应用程序中使用一个单一的cookieJar,你也可以通过设置选项
jar
到true
使用要求的全球饼干罐express.js,请尝试使用中间件https://expressjs.com/zh/guide/using-middleware.html。如果没有,你可以有一个没有任何路径的中间件函数,它可以执行任何请求 –