2013-07-13 38 views
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'); 
       } 
    }); 
}, 
爲例

任何想法,將不勝感激,其可能非常愚蠢......:/

感謝先進!

+0

我會首先確定'plainText'和'object.password'是什麼,這可能會給你一個線索爲什麼函數返回'false'。 – robertklep

回答

0

YEah robert klep在錢上是對的,在我看到貓鼬文檔和mongodb文檔後​​,很明顯查詢返回了一個mongo文檔對象,應該轉換爲相同的對象或變量類型操作工。