【发布时间】:2014-08-16 09:23:55
【问题描述】:
有人可以解释为什么每次我调用我的快速服务器时都会创建一个新会话。
问题在于,一旦创建了新会话,它就不包含针对护照属性的用户 ID。
前端的架构是 2 个 html 页面,我通过 get 路由提供服务。 (1) html页面是登录表单。 (2) html 页面是一个单页 ember 应用程序,用户只有经过身份验证(工作)才能访问
我通过 jQuery $.ajax 获取和发布数据 - 几乎就像每次我发出请求时,我都会获得一个新会话。很奇怪。
部分 app.js
server.use(cookieParser());
server.use(bodyParser.json());
server.use(bodyParser.urlencoded());
server.use(express.static(__dirname + '/public'));
server.use(session({
name: settings.sessionName,
secret: settings.secret,
cookie: { maxAge: 2 * 60 * 60 * 1000 },
store: new MongoStore({
db: settings.database.name
})
}));
server.use(passport.initialize());
server.use(passport.session());
require("./server/config/passport.js")(server, passport);
require("./server/routes.js")(server, passport);
passport.js
module.exports = function (server, passport) {
var LocalStrategy = require('passport-local').Strategy;
var User = require('../schemas/user');
passport.serializeUser(function (user, done) {
done(null, user._id);
});
passport.deserializeUser(function (id, done) {
User.findById(id, function (error, user) {
if (!error) done(null, user);
else done(error, null);
});
});
passport.use("local", new LocalStrategy({
usernameField: 'email',
passwordField: 'password',
passReqToCallback: true
},
function (req, email, password, done) {
User.findOne({ 'emailAddress': email }, function (error, user) {
if (error) {
return done(error);
}
if (!user) {
return done(null, false);
}
if (!user.validPassword(password)) {
return done(null, false);
}
return done(null, user);
});
})
);
};
此时任何事情都会有所帮助。扯掉我的头发!
:)
【问题讨论】:
标签: node.js mongodb express mongoose passport.js