2016-09-05 16 views
0

我正在查看用戶是否已通過身份驗證或未瀏覽某些內容,以瞭解是否已寫入此代碼。如何截取快遞框架中的每個請求

router.use(function (req, res, next) { 
    console.log(req); 
    if(req.isAuthenticated()){ 
     console.log("if......"); 
     return next(); 
    }else{ 
     if (req.url === '/users/login' || req.url === '/users/register'){ 
      console.log("if......2"); 
      return next(); 
     }else{ 
      if (req.url === '/'){ 
       console.log("if......3"); 
       res.redirect('/users/register'); 
      }else{ 
       res.redirect('/users/login'); 
      } 
     } 
    } 
}); 

現在我有兩個問題要清楚。

  1. 這是標準的做法嗎?不,請讓我知道如何實現。
  2. 每當我瀏覽localhost:3000我的req.url = /user/login我也很驚訝。我甚至不知道它有多可能。

但可能是高速緩存或東西不是一定要清楚這一點,我必須通知,在此之前,我有一些代碼的東西像下面這是爲了攔截或當他打localhost:3000,但現在我已經評論說,整個代碼驗證用戶。

// Get Homepage 
router.get('/'/*, ensureAuthenticated*/, function(req,res){ 
    res.render('index'); 
}); 

/*function ensureAuthenticated(req, res, next){ 
    if(req.isAuthenticated()){ 
     return next(); 
    }else{ 
     res.redirect('/users/login'); 
    } 
} 

router.use(function (req, res, next) { 
    console.log('Time:', Date.now()); 
    next(); 
});*/ 
+0

的可能的複製[如何攔截node.js的明確要求(http://stackoverflow.com/questions/11038830/how - 截取節點 - js-express-request) –

+0

q。 2 – Bhagya

+0

另外,我建議你查看[PassportJS](https://github.com/passport/express-4.x-local-example),以獲得授權等情況。 –

回答

0

中間件在這裏派上用場。 定義中間件像

module.exports.isAuthenticated=function(req,res,next){ 

    if(req.isAuthenticated){ 
    return next(); 
    } 
    next(error('user is not authorized')); 
} 

然後在路由文件

route.get('/home',auth.isAutheticated,goToHome); 
+0

你是正確的,如果我這樣做,我需要做的所有要求 – Bhagya