2014-02-25 2 views
2

sailsjs로 passport-local을 구현하려고하는데 인증을 시도 할 때 응답이 없습니다. 여기에 코드입니다 :Sailsjs에서 여권 - 로컬을 사용할 때 응답 없음

//config/passport.js 

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

module.exports = { 
    express: { 
     customMiddleware: function(app){ 
      console.log('Express midleware for passport'); 
      app.use(passport.initialize()); 
      app.use(passport.session()); 
     } 
    } 
}; 

passport.serializeUser(function(user, done) { 
    done(null, {omar: "omar"}); 
}); 

passport.deserializeUser(function(id, done) { 

     done(null, {omar: "omar"}); 

}); 

passport.use(new LocalStrategy(
    function(username, password, done) { 
     // asynchronous verification, for effect... 
     process.nextTick(function() { 

       return done(null, {user: "omar"}); 

     }); 
    } 
)); 

_

//LoginController.js 
var passport = require('passport'); 
var loginController = { 


    login: function(req, res){ 
     //res.json(req.param('username')); 
     console.log('loginctrl'); 

     passport.authenticate('local', { failureRedirect: '/login', failureFlash: true }), 
      function(req, res) { 
       console.log('passport auth'); 
       res.send("success"); 
      } 


    }, 

    /** 
    * Overrides for the settings in `config/controllers.js` 
    * (specific to LoginController) 
    */ 
    _config: {} 


}; 


module.exports = loginController; 

내가 로그인 /에 POST하기 위해 노력하고있어,하지만 내가 할 수있는 유일한 콘솔 메시지는 다음과 같습니다 여권
에 대한

익스프레스 미들웨어 logctrl

의미 그건 calli가 아닙니다. LocalStrategy 콜백에 "0 NO RESPONSE"오류가 발생합니다.
왜 그럴까요?

+1

이 LoginController''에 당신의'login' 방법에 오타가있다 :'passport.authenticate ('local', ...), function() {}'은 passport.authenticate ('local', ..., function() {}'이어야합니다. 또한 나는 '여권'호출을 [정책] (http://sailsjs.org/#!documentation/policies) – marionebl

+0

로 옮길 것입니다. 귀하의 의견도 도움이되었습니다, 감사합니다! – Omar

답변

0

여기 passport.authenticate를 호출하는 방식에 문제있다 :

passport.authenticate('local', { failureRedirect: '/login', failureFlash: true }), 
      function(req, res) { 
       console.log('passport auth'); 
       res.send("success"); 
      } 

passport.authenticate 요청/응답 호출하도록되어 함수를 반환.

항해/여권 통합의 예 여기를 참조하십시오 :