1
嘗試使用express.js和passport.js設置身份驗證。 嗯,可能是愚蠢的問題,但我不明白所有這些東西是如何工作的。express.js,passports.js:爲什麼共享會話?
我設置了facebook策略,現在可以通過facebook授權用戶。我堅持的是:
如果我在一個客戶端(瀏覽器)上對用戶進行身份驗證,它會在所有發出請求的其他客戶端上進行身份驗證。這是爲什麼?我該如何配置快遞和護照才能在生產中正確安全地使用它?
我的快遞配置:
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser());
app.use(express.session({ secret: 'secret' }));
app.use(passport.initialize());
app.use(passport.session());
app.use(app.router);
app.use(express.static('public'));
沒有真正得到的所有驗證的東西。在通過身份驗證後,客戶端是否應該出現一些cookie?
UPD:
護照配置:
passport.serializeUser(function(user, done) {
done(null, user._id);
});
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
done(err, user);
});
});
passport.use(new FacebookStrategy({
clientID: nconf.get('facebook:appId'),
clientSecret: nconf.get('facebook:appSecret'),
callbackURL: nconf.get('facebook:callbackUrl')
},
function(accessToken, refreshToken, profile, done) {
User.findOrCreateExternal(profile, done)
}
));
路線
app.get('/api/users/facebook', users.facebookLogin);
app.get('/api/v1/users/facebook/callback', users.facebookLoginCallback);
操作:
facebookLogin: function(req, res, next){
return passport.authenticate('facebook', {
scope: nconf.get('facebook:permissions')
})(req, res, next)
},
facebookLoginCallback: function(req, res, next){
return passport.authenticate('facebook', {
successRedirect: process.env.FB_SUCCESS_REDIRECT,
failureRedirect: process.env.FB_FAILURE_REDIRECT
})(req, res, next)
},
UPD2:
路線和行動得到當前認證的用戶:
app.get('/api/users/logged', users.getLoggedInUser)
行動代碼:
getLoggedInUser: function(req,res){
//Currently last authenticated user is send to all clients that make requests.
res.send({user: req.user || false})
}
您如何使用passport.js以及如何驗證路線? –
有問題需要更新。 – WHITECOLOR
好,如何確保用戶可以請求路由? –