Articles of 护照本地

req.session.passport和req.user空,serializeUser和deserializeUser都不会被调用

我正在使用Express(v4.11.2)与护照,以支持多个提供商(本地,脸谱,微博和谷歌)访问我正在build设的networking应用程序。 作为后端,我使用的是mysql。 现在我有两个本地策略:本地注册和本地login。 我遇到的问题是,req.session.passport和req.user总是空的,实际上,serializeUser和deserializeUser永远不会被调用。 这里是快递和护照的设置: var bodyParser = require('body-parser'); var session = require('express-session'); var MemoryStore = session.MemoryStore; var _ = require('underscore'); var passport = require('passport'); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({extended: true})); app.use(session({ key: 'KEY', secret: 'SECRET331156%^!fafsdaasd', store: new MemoryStore({reapInterval: 60000 * 10}), saveUninitialized: true, resave: false })); app.use(passport.initialize()); app.use(passport.session()); require('./config/passport')(passport); // pass passport for configuration 这里是身份validation策略的护照文件: module.exports = […]

护照js如何在会话中存储用户对象?

我正在使用节点/expression护照在我的发展。 我遇到一篇文章说: Express加载会话数据并将其附加到请求。 由于护照将序列化的用户存储在会话中,因此可以在req.session.passport.user中find序列化的用户对象。 但令我惊讶的是,浏览器cookie中sessionID存储的值在login前后保持不变。 那么序列化的用户对象存储在哪里呢? 我以为它最初存储在用户sessionid cookie中,但似乎并非如此,因为我仍然可以通过req.session.passport.user访问我的用户对象

在会话中更新login的用户详细信息

ExpressJS使用PassportJS。 我需要更新login的用户的详细信息。 虽然我在数据库中进行更新,但是如何在会话中更新它,以便request.user包含更新的用户详细信息? 也就是说,在更新数据库之后,如何更新用户的会话信息呢? 我试着直接分配更新的细节request.user但它没有工作。 然后我尝试request.session.passport.user – 这工作,但有一个约5至10秒的延迟之前,它在request.user更新。 是否有我需要调用的函数更新会话中存储的用户信息? 还是有一些其他的对象,我可以更新的地方没有延迟的变化

Passport本地策略完成callback不会传递错误json消息

我想通过一个JSON消息,当身份validation失败,使用完成callback在LocalStrategy,但我得到的是401和“未经授权”string的响应。 var express = require('express'); var bodyParser = require('body-parser'); var passport = require('passport'); var LocalStrategy = require('passport-local').Strategy; var app = express(); app.use(bodyParser.json()); app.use(passport.initialize()); passport.serializeUser(function(user, done) { done(null, user.email); }); var strategy = new LocalStrategy({ usernameField: 'email' }, function (email, password, done) { if (email === 'test@gmail.com' && password === 'pass') { return done(null, { email: […]

护照的req.isAuthenticated总是返回false,即使我硬编码完成(null,true)

我试图让我的护照本地策略工作。 我有这个中间件设置: passport.use(new LocalStrategy(function(username, password, done) { //return done(null, user); if (username=='ben' && password=='benny'){ console.log("Password correct"); return done(null, true); } else return done(null, false, {message: "Incorrect Login"}); })); 但在这里 app.use('/admin', adminIsLoggedIn, admin); function adminIsLoggedIn(req, res, next) { // if user is authenticated in the session, carry on if (req.isAuthenticated()) return next(); // if they aren't […]