1
在快速構建一個簡單的網絡應用程序應用程序,我有點卡在我的會話認證,即時我會驗證客戶端中的所有與骨幹和regExp最終當我開始構建應用程序的前端。沒有basycally我有問題在貓鼬返回一個貓鼬文檔對象的查詢。我查了幾個解決方案,在查詢中你可以使用.lean()來獲取一個對象,或者從查詢中獲取返回並應用一個.toObject(),但所有的工作都很好,我嘗試使用字符串驗證密鑰的值,它返回false。我會發佈一個示例代碼,它不完全是我所知道的,但它足夠接近以獲得重點。node + express + mongoose查詢認證
這將是我的模型文件
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');
}
});
},
爲例
任何想法,將不勝感激,其可能非常愚蠢......:/
感謝先進!
我會首先確定'plainText'和'object.password'是什麼,這可能會給你一個線索爲什麼函數返回'false'。 – robertklep