登錄權限驗證session

原理

登錄成功後,保存登錄信息到文件/數據庫種,同時保存創建時間和過期時間,下次驗證的時候取出來做驗證
使用express-session中間件來進行session的操作

安裝express-session

npm install express-session

配置expess-session中間件

//使用express-session插件
app.use(session({
  secret: 'keyboard cat',//這是祕鑰
  resave: false,
  saveUninitialized: true,
  cookie: { 
    path: '/',//發送的cookies路徑
    httpOnly: true,//是否http請求
     secure: false,
      maxAge: 1000*60*60 //設置過期的時間,以ms爲單位
  }
}))

發送給前端

如果登錄成功,發送給前端,前端存儲,下次請求時攜帶給後端

req.session.userInfo={
    id:_judge_result[0]._id,
    level:_judge_result[0].level||8//8爲等級權限
}

登錄驗證

const isSignin =(req,res)=>{
    if(req.session.userInfo){
       res.render('user',{
           code:200,
           data:JSON.stringify({
               msg:"用戶已經登錄了"
           })
       })
    }else{
        res.render('user',{
            code:403,
            data:JSON.stringify({
                msg:"用戶未登錄,請重新登錄"
            })
        })
    }
}
總結:後端存儲驗證信息的方式,如果用戶過大,需要做負載均衡,還容易受到攻擊,如:網站釣魚。如果你有什麼見解,歡迎留言。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章