簡體   English   中英

節點+快遞+貓鼬查詢身份驗證

[英]node + express + mongoose query authentification

我在Express中構建了一個簡單的Web應用程序應用程序,我在會話的身份驗證中有些卡住,最終在我開始構建應用程序的前端時,我將使用骨干網和regExp來驗證客戶端中的所有內容。 沒有basycally,我在貓鼬查詢返回貓鼬文檔對象時遇到了問題。 我已經找到了幾種解決方案,在查詢中可以使用.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');
                }
    });
},

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

提前致謝!

是的,羅伯特·克萊普(Robert klep)的錢是對的,在我查看了mongoose文檔和mongodb文檔之后,很明顯查詢返回了mongo文檔對象,術語應轉換為相同的對象或變量類型,以使操作符起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM