0
ローカル戦略でパスポート認証を使用しようとしていますが、毎回認証が失敗し、ローカル戦略に移行しません。 コードが脱線された場所を確認するためにいくつかのコンソールログを追加しましたが、何も記録されていません。Passport認証が合格しない
users.js(ルータ)
var express = require('express');
var router = express.Router();
var User = require('../models/user');
var multer=require('multer');
var passport=require('passport');
var LocalStrategy=require('passport-local').Strategy;
/* GET users listing. */
router.get('/', function(req, res, next) {
res.send('respond with a resource');
});
router.get('/register', function(req, res, next) {
res.render('register',{
'title':'Register'
});
});
router.get('/login', function(req, res, next) {
res.render('login',{
'title':'Login'
});
});
passport.use(new LocalStrategy(
function(username,password,done){
console.log('words');
User.getUserByUsername(username,function(err,user){
if (err) throw err;
if(!user){
console.log('Unknown user');
return done(null,false);
}
});
}
));
router.post('/login',passport.authenticate('local',{failureRedirect:'/users/register'}),function(req,res){
console.log('Authentication succesful');
req.flash('success','You are logged in');
res.redirect('/');
});
module.exports = router;
私はapp.jsファイルでこれを行いました。私もルータでそれを行う必要がありますか?私はこれを試しても、それはまだ認証に失敗します。正しいパスワードでもリダイレクトされます –
あなたのコードを読み直しましたが、passport.use(new LocalStrategy(..))で成功したdone()コールを返さないためかもしれません。あなたはエラーを投げたり、done(null、false)を返します。しかしあなたはdone(null、true || user)を返しません。 –
私はリターンコールでそれを編集しましたが、まだ運がありません。また、私のconsole.logのどれもが呼び出されていないので、ローカル戦略に到達していないと思います。 passport.authenticate( 'local'、{failureRedirect: '/ users/register'})を取り出すと、ポストが正しく実行され、その機能に問題があると思うでしょう。 –