0

みんな私は自分自身を認証しようとしています。このために、node.jsとmongo DBを使用しています.しかし、問題は、登録後にユーザーが自分自身を認証できないことです。

app.post('/login',function(req,res){
    ContactProvider.findAll(function(error, posts) {
        var aut = req.body;
        if (aut.user == posts.user && aut.pass == posts.pass) {
            req.session.name = {name:aut.user};
            res.redirect('/home');
        } else {
            res.send('Bad user/pass');
        }
    });
}); 

以下は、ユーザーを登録するための私のスニペットです

app.post('/register',function(req, res) {
    var post=req.body;
    if(post.pass!=post.cpass) {
        res.send("Error:Password doesnt match");
    } else {
        ContactProvider.save({
            user: req.param('user'),
            pass: req.param('pass'),
            cpass: req.param('cpass'),
            email: req.param('email')
        }, function(error, docs) {
            res.redirect('/');
        });
    }
}); 

ContactProvider は以下のもので、投稿プロバイダーはすべてのマングースが発生する別のファイルです

var ContactProvider = require('./PostProvider').ContactProvider;
var ContactProvider= new ContactProvider(); 

これは、postprovider ファイル内の finone クエリです。

ContactProvider.prototype.findone = function(name,pass, callback) {
  Post.findOne({name:name},{pass:pass}, function (err, post) {
                  callback(null, post);

          });
  };
4

1 に答える 1

0

コードに深刻な問題があります (なぜ namepostsの配列にContactProvider? を使用するのですか)。ContactProviderユーザー名とパスワードに基づいて検索する必要があります。このようなもの:

app.post('/login',function(req,res){
    var aut = req.body;
    ContactProvider.findOne(
        {
            user: aut.user,
            pass: aut.pass
        },
        function(err, usr) {
            if (error || !usr) {
                res.send('Bad user/pass');
            } else {
                // we have a user, authenticate!
                req.session.name = {name:aut.user};
                res.redirect('/home');
            }
        }
    );
});

補足:これはユーザーを認証する非常に簡単な方法ですが、まったく安全ではありません。インターネットでの認証とセキュリティについて詳しく読む必要があります。確かに非常に役立つ知識。

編集:登録にも問題があります。データはpost変数に保存されるためContactProvider、同様に使用します。

// some other code
ContactProvider.save({
    user: post.user,
    pass: post.pass,
    cpass: post.cpass, // no need to store the same thing twice
    email: post.email
于 2012-09-03T11:49:13.037 に答える