我在 express 中构建了一个简单的 web 应用程序应用程序,我有点卡在我的会话身份验证中,当我开始构建应用程序的前端时,我最终将使用骨干网和 regExp 验证客户端中的所有内容。基本上,我在 mongoose 中的查询返回一个 mongoose 文档对象时遇到问题。我查找了几个解决方案,在查询中,您可以使用 .lean() 来获取对象,或者从查询中获取返回并应用 .toObject(),这一切都很好而且花花公子,但是当我尝试使用返回 false 的字符串验证密钥的值。我将发布一个示例代码,它不完全是我所拥有的,但它足够接近以理解这一点。
这将是我的模型文件的一个示例
var User = new Schema({}, { strict: false });
User.method('authenticate', function(plainText) {
var object = this.toObject();
return plainText == object.password; });
mongoose.model('User', User);
mongoose.connect( definitions.dbConnect );
在我的应用程序文件中,我会有类似的东西
app.get('/session', routes.showLogin);
app.post('/session/new', routes.login);
在我的路线文件ID中有类似的东西
exports.login = function(req, res){
var userQuery = new RegExp(req.body.username , 'i');
var passwordQuery = new RegExp(req.body.password, 'i');
var Query = User.find();
Query.findOne().where('username', userQuery).exec(function(err, user){
if(user && user.authenticate((req.body.password))){
req.session.userId = user._id;
}else{
res.redirect('/session');
}
});
},
任何想法都会受到赞赏,它可能非常愚蠢......:/
先谢谢了!