【发布时间】:2017-09-18 14:11:12
【问题描述】:
将 node.js 与 express 服务器一起使用,我的目的是在会话中保存已登录的本地用户,以便我可以从前端调用它并在用户实际登录时获取用户信息。
为此,我正在使用快速会话和护照。如果正确登录并将会话保存在 req 中,以下代码将返回用户。
我已调试查询并正确返回数据。
passport.use('local-login', new LocalStrategy({
usernameField: 'email',
passwordField: 'pass',
passReqToCallback: true
},
function(req, email, pass, done) {
return modelUsers.login(email, pass, done);
}));
这是我的会话配置。
app.use(session({
resave: true,
saveUninitialized: true,
secret: 'strongertogether',
cookie: { secure: false }
} )); // session secret
app.use(passport.initialize());
app.use(passport.session()); // Persistent login sessions
app.use(cors()); //Required for signin facebook
据我所知,一旦登录完成,用户就会保存在会话中,并且函数 req.isAuthenticated() 应该返回一个真值,但它是假的,req.user 是未定义的.
事实 twitter 和 facebook 会话正常工作。
从我调用的前端(Angular.js)
app.get('/api/loggedin', usersController.loggedin);
那就去
function loggedin(req, res) {
res.send(req.isAuthenticated() ? req.user : '0');
}
版本:
“快递”:“^4.9.3”
“快速会话”:“^1.11.3”
“本地护照”:“^1.0.0”
“护照”:“^0.2.2”
【问题讨论】:
-
我没有仔细阅读您的代码,但我的这个苏格兰威士忌有助于理解您的问题
https://scotch.io/tutorials/easy-node-authentication-setup-and-local。我正在使用相同的方法并且对我来说工作得很好。浏览链接可能我使用的东西丢失了。
标签: node.js session express passport-local passport.js