Lan*_*lot 5 session mongodb node.js express everyauth
我目前正在尝试在MongoDb中存储会话.
我尝试过express-session-mongo和connect-mongodb,当我尝试加载登录页面时,两者都给了我相同的"500内部服务器错误".这让我想到可能在某处与mongoose-auth发生冲突.
无论如何这里是我的设置:
app.js:
var MongoStore = require('connect-mongodb');
var MongoDb = require('mongodb').Db;
var Server = require('mongodb').Server;
var db = new MongoDb('myDb', new Server('localhost', 27017, {auto_reconnect: true, native_parser: false}));
app.configure(function() {
app.use(express.logger({format: 'dev'}));
app.set('views', __dirname + '/../views');
app.set('view engine', 'jade');
app.set('view options', { layout: false });
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(mongooseAuth.middleware());
app.use(require('./mysite').middleware());
app.use(express.methodOverride());
});
app.configure('production', function(){
var oneWeek = 657450000;
app.use(express.static(__dirname + '/../public', { maxAge: oneWeek }));
app.use(express.session({ store: new MongoStore({db: db}), secret: 'super secret' }));
app.use(express.errorHandler());
});
// Routes
require('./routing.js');
mongooseAuth.helpExpress(app);
app.listen(3000);
console.log('Express server listening on port %d in %s mode', app.address().port, app.settings.env);
Run Code Online (Sandbox Code Playgroud)
userModel.js
var Schema = mongoose.Schema;
var mongooseTypes = require("mongoose-types");
var mongooseAuth = require('mongoose-auth');
mongooseTypes.loadTypes(mongoose);
var everyauth = require('everyauth')
everyauth.debug = true;
var UserSchema = new Schema({any: {}});
UserSchema.plugin(mongooseAuth, {
everymodule: {
everyauth: {
User: function () {
return User;
}
}
}
, password: {
loginWith: 'email'
, extraParams: {
phone: String
, username: String
}
, everyauth: {
getLoginPath: '/login'
, postLoginPath: '/login'
, loginView: 'account/login.jade'
, getRegisterPath: '/register'
, postRegisterPath: '/register'
, registerView: 'account/register.jade'
, loginSuccessRedirect: '/login/success'
, registerSuccessRedirect: '/register/success'
}
}
});
mongoose.model('User', UserSchema);
User = mongoose.model('User');
Run Code Online (Sandbox Code Playgroud)
在这个时刻,我真的只是尝试使用MongoDb作为会话存储,但是当我尝试加载登录页面时,我再次得到一个500错误,而没有任何信息在node.js控制台中.
任何帮助将不胜感激.
谢谢
它结束了各种模块的问题:connect-session-mongo/express-session-mongo/connect-mongo,使用connect 2.0.1和Express使用connect 1.8.5.
显然,依赖性冲突阻止了会话存储模块访问"req.secret"属性.
为了使它工作,我结束使用仍然使用connect 1.8.5的模块connect-mongodb,就像Express一样.
之前我无法使connect-mongodb工作的原因是用户错误,我太努力使用来自在线示例而不是我的头部的复制/粘贴.
以下是最终使用connect-mongodb为我工作的配置代码:
var Session = require('connect-mongodb');
app.configure('production', function(){
var oneWeek = 657450000;
app.use(express.static(__dirname + '/../public', { maxAge: oneWeek }));
var session = express.session({
store: new Session({
url: 'mongodb://localhost:27017/test',
maxAge: 300000
}),
secret: 'superTopSecret'
});
app.use(session);
app.use(mongooseAuth.middleware());
app.use(require('./mySite').middleware());
app.use(express.methodOverride());
app.use(express.errorHandler());
});
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助遇到此问题的任何其他人.如果您对此解决方案有任何建议/改进,我会很高兴听到它.:)
| 归档时间: |
|
| 查看次数: |
12432 次 |
| 最近记录: |