passport是Nodejs的一箇中間鍵,用於用戶名和密碼的驗證登錄。在項目中我用它來驗證後臺用戶名和密碼,但passport更多用在第三方登陸,功能強大。javascript
本項目中使用了passport以及passport-localphp
npm install passport --save npm install passport-local --save
// 初始化調用passport
app.use(passport.initialize()); app.use(passport.session());
var passport = require('passport'); var Strategy = require('passport-local').Strategy; var account = require('./account'); //建立本地策略 passport.use('local', new Strategy({ // 須要驗證的字段名稱 username: 'username', password: 'password' }, // 回調函數 function(username, password, cb) { //驗證不經過 if(username != account.username) { return cb(null, false, {message: '用戶名錯誤'}); } if(password != account.password) { return cb(null, false, {message: '密碼錯誤'}); } //驗證經過,返回用戶信息 return cb(null, account); } ));
//序列化,用戶提交後會把id做爲惟一標識儲存在session中,同時存儲在用戶的cookie中 passport.serializeUser(function(account, cb) { console.log('in serializeUser'); return cb(null, account.id); }); //驗證用戶是否登陸時須要用到這個,session根據id取回用戶的登陸信息並存儲在req.user中 passport.deserializeUser(function(id, cb) { console.log('in deserializeUser'); if(id == account.id) { return cb(null, account); } else { return cb(err); } });