路由器function内部不能获得everyauth的req.user

我是node.jseveryauth的新手。 当我只是在everyauth周围玩,我已经意识到everyauth.user在玉视图工作,但我不能让req.user在页面callback里面工作。

 /** * Module dependencies. */ var express = require('express') , routes = require('./routes') , everyauth = require('everyauth') , Promise = everyauth.Promise , util = require('util') , models = require('./models'); //Everyauth setup everyauth.twitter .consumerKey('XXX') .consumerSecret('XXX') .findOrCreateUser(function(session, accessToken, accessTokenSecret, twitterData){ var promise = new Promise(); models.findOrCreateTwitterUser(twitterData,promise); return promise; }) .redirectPath('/'); var app = module.exports = express.createServer(); // Configuration app.configure(function(){ app.set('views', __dirname + '/views'); app.set('view engine', 'jade'); app.use(express.bodyParser()); app.use(express.static(__dirname + '/public')); app.use(express.cookieParser()); app.use(express.session({secret:"Iam james bond"})); app.use(express.methodOverride()); //app.use(app.router); app.use(everyauth.middleware()); }); app.configure('development', function(){ everyauth.debug = true; app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); }); app.configure('production', function(){ app.use(express.errorHandler()); }); // Routes app.get('/', function(req, res){ if(req.loggedIn){ console.log(req.user); //<--This is always undefined } console.log("index"); res.render('index', { title: 'Welcome to Chat app' }); }); //Helpers everyauth.helpExpress(app); app.listen(3000); console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env); 

这是有问题的部分

 app.get('/', function(req, res){ if(req.loggedIn){ console.log(req.user); //<--This is always undefined } console.log("index"); res.render('index', { title: 'Welcome to Chat app' }); }); 

看来我错过了一些观点。 奇怪的部分是req.loggedIn按预期工作,但不知何故每一个都不填充用户数据。

       

网上收集的解决方案 "路由器function内部不能获得everyauth的req.user"

我一直在与最新版本的Everyauth req.user问题。 我所做的是使用“req.session …”。 所以,如果我想在Facebook的oauth下得到用户,我会使用req.session.auth.facebook.user.id,这给了我的用户ID。

console.log(req.session),并从那里提取你想要使用的任何信息。

要通过req.user访问“用户”,您需要像下面那样configurationeveryauth.everymodule.findUserById

 //Everyauth setup .... .... everyauth.everymodule.findUserById( function (userId, callback) { var db = app.set('db'); var User = db.main.model('User'); User.findById(userId, callback); // callback has the signature, function (err, user) {...} }); .... .... var app = module.exports = express.createServer(); //Configuration