express-session通過設(shè)置req.session.user不生效的問題

??之前跟著網(wǎng)上一個教程做了一個nodeJS+mongoDB的博客系統(tǒng),原教程使用的是ejs的模板,為了結(jié)合現(xiàn)在前后端分離的開發(fā),自行想把他改成restful API形式,剛開始就遇到如題的問題。

??查詢列表什么的還沒什么,當(dāng)需要登錄權(quán)限的時候就出問題了,node在登錄后回將session保存在req.session.user上,在后面需要權(quán)限的時候去取出來驗證,如果有req.session.user則通過驗證,如果沒有則提示登錄。我在登錄后能正確提示成功,但是到需要驗證的功能上還是不能通過權(quán)限驗證,通過google發(fā)現(xiàn),在請求的時候沒有帶cookies,所以服務(wù)器不能認為你是一個已經(jīng)登錄的用戶。以上是原因,以下是我在工程中的實現(xiàn)原理:

//項目中使用的是axios進行數(shù)據(jù)請求,在main.js中進行全局設(shè)置
axios.defaults.withCredentials= true;  

??另外在設(shè)置攜帶cookies進行請求的時候,后端跨域Access-Control-Allow-Origin不能設(shè)置為*,因為 '*' 會和 Access-Control-Allow-Credentials:true 沖突(Access-Control-Allow-Credentials:true也是必帶的),需配置指定的地址。以下是我的服務(wù)端跨域設(shè)置:

app.all('*', function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "http://localhost:8080");
  res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
  res.header('Access-Control-Allow-Credentials', 'true');
  res.header("Access-Control-Allow-Headers", "X-Requested-With");
  res.header('Access-Control-Allow-Headers', 'Content-Type');
  next();
});

另外

??以前遇到的一個問題,順便在此記錄以下,當(dāng)傳輸?shù)臄?shù)據(jù)(前端向服務(wù)器端傳遞數(shù)據(jù))中含有數(shù)組的時候,在服務(wù)端接收的是[ Object Object ]或者[ data ]等情況,在前端設(shè)置traditional:true屬性即可。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容