原理
登錄成功後,保存登錄信息到文件/數據庫種,同時保存創建時間和過期時間,下次驗證的時候取出來做驗證
使用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:"用戶未登錄,請重新登錄"
})
})
}
}
總結:後端存儲驗證信息的方式,如果用戶過大,需要做負載均衡,還容易受到攻擊,如:網站釣魚。如果你有什麼見解,歡迎留言。