0
我有一個工作的開發版本,甚至我的測試版本一直工作到最近。身份驗證有時會起作用,但大多數身份驗證僅通過req.isAuthenticated()失敗。passport.js反序列化正常,但身份驗證不起作用
server.js:
var express = require('express');
var app = express();
var port = PORTS[ENVIRONMENT];
var passport = require('passport');
var morgan = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var session = require('express-session');
var passportConfigs = require('./config/passport');
var routes = require('./routes.js');
// App setup
app.use("/", express.static(__dirname + '/public/'));
// configuration ===============================================================
/* open mongo connection */
require('./database/' + ENVIRONMENT + '.js');
/* === passport configs === */
passportConfigs(passport, ENVIRONMENT);
// set up our express application
app.use(morgan(morganEnv)); // log every request to the console
app.use(cookieParser()); // read cookies (needed for auth)
//app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: true
})); // get information from html forms
app.set('view engine', 'ejs'); // set up ejs for templating
// required for passport
app.use(session({
secret: '********' ,
resave: false,
saveUninitialized: false
}));
app.use(passport.initialize());
app.use(passport.session()); // persistent login sessions
護照連載:
passport.deserializeUser(function(id, done) {
userQueries.findID(id)
.then(function(user) {
var firebaseRef = firebaseRefMod(user, environment).ref;
if(!firebaseRef) {
throw new Error('problem with generating firebase reference, dunno why!');
}
console.log("UserFirst:", { userData: filterUserData(user), FBRef: firebaseRef })
done(null, { userData: filterUserData(user), FBRef: firebaseRef });
}).then(null, function(err) {
console.log(err);
done(err, null);
});
});
路線:
app.post('/auth', isLoggedIn, function(req, res) {
console.log("req", req.user)
res.status(200).send({ "authKey": authGenerator.createToken(authGenerator.types.NORMAL, req.user.userData) , "user": req.user.userData });
});
function isLoggedIn(req, res, next) {
console.log("userIn", req.isAuthenticated())
// if user is authenticated in the session, carry on
if (req.isAuthenticated())
return next();
// if they aren't redirect them to the home page
errorInRestRequest(res, errorCodes.userNotAuthenticated, req.user);
return false;
}
,如果認證成功,因爲它應該因此,基本上,在isLoggedIn功能訪問到來自req.user的用戶數據。即使身份驗證不成功,每次通過「console.log(」UserFirst:「...條目)進行驗證時,用戶都會反序列化,但req.user在到達isLoggedIn-功能。
不幸的是護照的我和知識表達中間件是有限的,所以我困惑的是,其中的數據之間便從凝然。
不幸的答案 – ekkis 2016-11-06 20:27:41