我對請求模塊使用了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。如果沒有,你可以有一個沒有任何路徑的中間件函數,它可以執行任何請求 –