我对这个问题感到疯狂。我刚刚使用Google oAuth 2.0策略设置Passport js,并且在我本地的Express 4服务器上运行完美。Passport auth在本地工作,但不在远程服务器上
但是,当我尝试我的亚马逊服务器调用req.isAuthenticated()返回false每次和req.user上运行它是不确定的。我无法弄清楚什么是错的。
passport.serializeUser(function(user, done) {
console.log("serializeUser " + user.id);
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
console.log("deserializeUser: " + id);
User.find({_id: id}, function (error, user) {
if (error || !user) {
done(error, null);
} else {
done(null, user);
}
});
});
passport.use(new GoogleStrategy({
clientID: config.google.clientID,
clientSecret: config.google.clientSecret,
callbackURL: config.google.callbackURL
},
function(accessToken, refreshToken, profile, done) {
process.nextTick(function() {
if(profile._json.domain === 'xxx'){
var query = {googleId: profile.id};
var options = {upsert: true, new: true, setDefaultsOnInsert: true };
// Find the document
User.findOneAndUpdate(query, query , options, function (error, user) {
if (error) {
return done(error);
}
return done(null, user);
});
}else{
return done(new Error("Invalid host domain"));
}
});
}
));
router.get('/auth/google',
passport.authenticate('google', { scope: ['https://www.googleapis.com/auth/plus.login', 'https://www.googleapis.com/auth/userinfo.email'] }));
router.get('/auth/google/callback',
passport.authenticate('google', { failureRedirect: '/login' }), function(req, res) {
res.redirect('/');
});
router.get('/login', ensureAuthenticated, function(req, res){
console.log("User is Authenticated");
});
function ensureAuthenticated(req, res, next) {
console.log("USER " + req.user);
if (req.isAuthenticated()) {
console.log("Authorized");
return next();
} else {
console.log("Not authorized");
res.sendStatus(401);
}
}
而这是Express服务器的conf。
/ Express
var app = express();
app.use(cookieParser('xxx'));
app.use(bodyParser.json({limit: '100mb'}));
app.use(bodyParser.urlencoded({limit: '100mb', extended: true}));
// Used for production build
app.use(express.static(path.join(__dirname, 'public')));
app.use(session({
store: sessionStore, //var sessionStore = new MemoryStore();
secret: 'xxx',
resave: true,
saveUninitialized: true,
cookie: {
secure: false,
path: '/',
httpOnly: true,
maxAge: new Date(Date.now() + 3600000),
}
}));
// Compress responses
app.use(compression());
app.use(passport.initialize());
app.use(passport.session());
routes(app);
请帮帮忙!
是的重定向工作尽我所知。 – hxmn