2016-06-27 13 views
0

私はMEAN STACKを使用してアプリケーションを構築しています。私は自分のログインフォームにパスポートローカル認証を使いたい。しかし、フォームの送信、私はPOST http://localhost/login 404(見つかりません)これ以下の私のコードの外観を持ってください取得していますの時間は私のコントローラです:Passportローカル認証が機能していません

lyfee.controller('loginCtrl', ['$scope', '$http', function($scope, $http) { 
    $scope.user = {}; 
    $scope.login = function() { 
     // var data = {User: $scope.user } 
     //console.log($scope.user); 
     console.log("login function call"); 
     $http.post('/login', $scope.user); 
     console.log("login request send"); 


    } 
}]); 

、これが私のserver.jsです:

var passport = require('passport'); 
var LocalStrategy = require('passport-local').Strategy; 
passport.use(new LocalStrategy(
    function(username, password, done) { 
     User.getUserByusername(username, function(err, user) { 

      if (err) throw err; 
      if (!user) { 
       return done(null, false, { 
        message: 'Unknown USER' 
       }); 

      } 

      User.comparePassword(password, user.password, function(err, isMatch) { 
       if() throw err; 
       if (isMatch) { 
        return done(null, user); 
       } else { 
        return done(null, false, { 
         message: 'Invalid password' 
        }); 
       } 
      }); 
     }); 

    })); 

app.post('/login', 
    passport.authenticate('local', { 
     successRedirect: '/', 
     failureRedirect: '/login', 
     failureFlash: true 
    }), 
    function(req, res) { 
     res.redirect('/'); 

    }); 

ファイルにはgetUserByusernameとcomparePassword関数を記述する必要がありますか?私がしている間違いは何かを修正して、私にいくつかの提案をしてください。お使いのモデルで

+0

のような関数を使用します。 User.js –

+0

@ Md.SharifulIslam、モデルにdbSchema.jsがあります。ここでmongooseのスキーマが定義されていますので、そこにwritecodeできますか? –

+0

平均スタック、SPA - 1ページしかありません。リダイレクトする場所はありません。 HTTPステータス(200,401)を返すだけでフロントエンド側でサポートできます。 –

答えて

0

はuser.jsのは、このような関数を書くこととします

/** 
* Check the user's password 
*/ 
dbSchema.methods.comparePassword = function(candidatePassword, cb) { 
    var status = this.password.localeCompare(candidatePassword.trim()); 
    if (status != 0) { 
     return cb(err); 
    } 
    cb(null, true); 
}; 

、その後getUserByusernameとcomparePasswordは、モデルファイルなどに書き込むことができ、この

passport.use(new LocalStrategy(
    function(username, password, done) { 
    User.findOne({ 
     username: username 
    }, function(err, user) { 
     if (err) throw err; 
     if (!user) { 
     return done(null, false, { 
      message: 'Unknown USER' 
     }); 

     } 
     /** 
     * Check the user's password 
     */ 
     User.comparePassword(password, user.password, function(err, isMatch) { 
     if (err) throw err; 
     if (isMatch) { 
      return done(null, user); 
     } else { 
      return done(null, false, { 
      message: 'Invalid password' 
      }); 
     } 
     }); 
    }); 
})); 
+0

暗号化されたパスワードを挿入しないので、「ユーザーのパスワードを確認する」機能のコードを変更する必要がありますか? –

+0

プレーンなパスワードを挿入していますか? –

+0

パスワードをハッシュしたのと同じ方法を使用して、パスワード –

関連する問題