原來一直不知道怎么在Express+Nodejs里面添加類似于Struts2的攔截器(因為要使用登錄攔截的功能)。
以前一直以為在router這塊添加類似一下的轉移路由控制權代碼的(每個都加很麻煩)
app.get('/show', controllers.checkLogin);//登錄驗證app.get('/show', controllers.showList);//實際跳轉又或者是像某些項目里面給每個controller的方法里面加以下這種驗證(太繁瑣了)
if (!req.session.user) { return res.redirect("/login"); }最近翻到之前使用session的代碼片段,突然有如茅塞頓開啊!!
//sessionapp.use(function (req, res, next) { var err = req.flash('error'); var success = req.flash('success'); res.locals({ user:req.session.user, navSide:req.session.navSide, error:err.length ? err : null, success:success.length ? success : null }); next();});這尼瑪不就是個攔截器嗎~囧~
稍加改造
//登錄攔截器app.use(function (req, res, next) { var url = req.originalUrl; if (url != "/login" && !req.session.user) { return res.redirect("/login"); } next();});經過測試,成功了
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。
新聞熱點
疑難解答