nodejs中間件攔截,express不登錄無法進入后台頁面


22.設置攔截

只有登錄才能進入到后台頁面,不登錄無法進入

如果登陸成功, 寫入session, 參數 uid    uid=123dsfjksldfjsl
檢測登陸, 請求中 session 是否包含 uid 參數.

1.app.js 入口頁面

設置session 的uid
app.use(session({
  secret: 'bitiancanshu',
  // 以下是選填參數,但是不填會提示警告 start
  resave: false,
  saveUninitialized: false,
    //  設置connect.sid  
  name: 'luyao',
  // 設置生命周期
  cookie: { maxAge: 60000000 },
}))

2.index.js 前台頁面

		當登錄成功時
	 if(user.password == md5(fields.password)){
          // 登錄成功,寫入session;根據用戶的id存入session,如果為了以后方面,可以把用戶的一系列信息都存到里面,但是這樣就增加了session的存儲容量。其實這種也可以解決,比如h5的本地存儲
          req.session.uid = user._id;
          res.render('commen/success',{msg:'恭喜您,登錄成功',time:3000,url:'/admin'});
        } else {
          res.render('commen/error', { msg: '對不起,密碼錯誤,請核對后重新輸入', time: 3000, url: '/login' });
        }

3.app.js 攔截的第一張方法,相對復雜,下面有簡單方法

//  攔截
app.use(function(req, res, next) {
  var url = req.url;
  // 判斷不攔截的路由 出/login和/之外的都攔截
  if (url != '/login' && !req.session.uid && url != '/') {
    console.log('跳轉到登錄頁');
    res.render('commen/error', { msg: '對不起,請登錄個人信息,否則無法進入后台管理頁面', time: 3000, url: '/login' });
    return;
  }
  next();
});
*****************************注意*****************************

引入路由規則,一定要在中間件和設置session的后面,否則無效,切記
app.use('/', indexRouter);
app.use('/', adminRouter);

3.1 攔截的另一種方法,更簡單

設置一個中間件的js文件
// middlewares/login.js


module.exports = function(req,res,next){
  var url = req.url;
  if (!req.session.uid) {
    res.render('commen/error', { msg: '對不起,請登錄個人信息,否則無法進入后台管理頁面', time: 3000, url: '/login' });
    return;
  }
  next();
}


在app.js中導入,全局中間件
var login = require('./middlewares/login');

app.use('/', indexRouter);
//  攔截,上面是不需要攔截的路由規則,下面是需要攔截的路由規則
app.use(login);
app.use('/', adminRouter);

這樣就可以攔截了后台頁面,而不攔截index.js中定義的所有前台頁面


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM