2016-08-04 60 views
0

所有:如何使用護照檢查用戶身份驗證某些航線上的快遞

Im相當新Passport.js,現在,我要的是檢查,如果用戶通過驗證後訪問某些航線,並我在該路線上添加了護照認證,但它看起來像一個交易循環:

它的行爲應該是:當用戶點擊該URL時,如果沒有認證,重定向到/ auth,否則繼續。

app.use("/url-must-be-auth", 
     passport.authenticate("local", { 
      successRedirect: '/url-must-be-auth', 
      failureRedirect: '/auth' 
     }) 
) 

passport.serializeUser(function(user, done) { 
    debugger; 
    done(null, user.email); 
}); 

passport.deserializeUser(function(email, done) { 
    debugger; 

    User.findOne({ 
     where: { email: email } 
    }) 
    .then(function(user) { 
    debugger; 

     done(null, user); 
    }) 
    .catch(function(err) { 
    debugger; 

     done(err, null); 
    }); 
}); 

deserilize部分永遠不會被調用。

無論如何,只要忘記我已經做了什麼,誰能幫助正確的方法來做到這一點?

回答

1

passport.authenticate()應該只是用來登錄或註冊路線

您可以編寫中間件的功能,將檢查的用戶身份驗證,否則重定向到登錄頁面

function isAuthenticated(req, res, next){ 
    if(req.isAuthenticated()) 
     next(); 
    res.redirect('/login'); 
} 

,並把它作爲第一功能某種路線:

app.get('/url-must-be-auth', isAuthenticated, function(req, res){ 
    //response 
}); 
相關問題