저는 개발 버전을 가지고 있으며 최근까지는 테스트 버전까지했습니다. 인증은 때때로 작동하지만 대부분 req.isAuthenticated()로 인증이 실패합니다.passport.js deserialization은 정상이지만 인증이 작동하지 않습니다.
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