2017-03-05 6 views
0

私はこの質問が以前に尋ねられたことを知っていますが、私は適切な答えを見つけることができませんでした。 コンソールエラーです。パスポートが投げているuser.authenticateは関数ではありません

TypeError: user.authenticate is not a function 
at /home/sinnedde/WebstormProjects/web-services/config/strategies/local.js:24:23 

ここには、ユーザー名とパスワードが正しいかどうかを確認するために使用されるlocal.jsがあります。

var passport = require('passport'), 
LocalStrategy = require('passport-local').Strategy, 
User = require('mongoose').model('User'); 

module.exports = function() { 
passport.use(new LocalStrategy(function (username, password, done) { 
    User.findOne({ 
     username: username 
    }, function (err, user) { 
     if (err) { 
      return done(err); 
     } 
     if (!user) { 
      return done(null, false, { 
       message: 'Invalid Username or Password' 
      }); 
     } 
     if (!user.authenticate(password)) { 
      return done(null, false, { 
       message: 'Invalid Username or Password' 
      }); 
     } 
     return done(null, user); 
    }); 
})); 
}; 

ここにコントローラのsigninメソッドがあります。

exports.signin = function (req, res, next) { 
passport.authenticate('local', function (err, user, info) { 
    if (err || !user) { 
     res.send(info); 
    } else { 
     res.json({ 
      status: 'true', 
      message: 'Logged In' 
     }); 
    } 
})(req, res, next); 
}; 

郵便配達員からの依頼です。ユーザー名が有効でない場合、私は適切な応答を得ていますが、パスワードが無効であれば、上記のエラーが発生します。私は何が間違っているのか分からない。助けてください。

答えて

1

あなたのMongooseモデルには認証方法はありませんが、スキーマに追加できます。

例コード:

var mongoose = require('mongoose'), 
    Schema = mongoose.Schema; 


var UserSchema = new Schema ({ 
    ... 
}); 


UserSchema.methods.authenticate = function(password) { 
    //implementation code goes here 
} 

mongoose.model('User', UserSchema); 
module.exports = mongoose.model('User'); 

それとも、私は同じエラーを得たMongoose passport plugin

+0

ありがとうございます。しかし、私はパスポートのローカル戦略を使ってログインを認証しています。私は以前にそれをしていた、問題はなかった。しかし、今私はこれを取得しています。コードに問題はありますか? –

+0

多分このリンクをチェックしてくださいhttp://mherman.org/blog/2015/01/31/local-authentication-with-passport-and-express-4/#.WLxOrhIrJ60 – hya

+0

私はMongooseパスポートプラグインを試しました。しかし、それは新しいエラーを投げている '' cbは関数ではない ' –

1

を使用することができます。私の場合、userSchema.plugin(passportLocalMongoose);を追加するのを忘れて、npmに passport-local-mongooseパッケージをインストールすることを忘れないでください。これがあなたに役立つことを願っています。ありがとう

関連する問題