2017-06-14 128 views
0

我从laravel背景想在我sails.js的应用程序来实现passport.js authentication与node.js的Passport.js认证

的文件是最小的,也很难理解

这里是我的login.js

module.exports = { 
    /* 
    *Normal login 
    */ 
    login:function (req,res) { 
     //user input 
     console.log('email'+req.parm('email')+'password'+req.param('password')) 
     passport.authenticate(
      'local-login', 
      function (req,res) { 


    } 
} 



passport.use('local-login',new LocalStrategy(function (username,password,done) { 
    if(username=='test') 
     return done(null,username); 
    else 
     return done(null,false,{message:'Invalid userinfo'}) 
})); 

passport.authenticate从来没有发射

从他们做cumentation

app.post('/login', 
    passport.authenticate('local'), 
    function(req, res) { 
    // If this function gets called, authentication was successful. 
    // `req.user` contains the authenticated user. 
    res.redirect('/users/' + req.user.username); 
    }); 

也是这个又是什么If this function gets called, authentication was successful.

发现这个教程http://iliketomatoes.com/implement-passport-js-authentication-with-sails-js-0-10-2/但其解释如此之差

回答

1

本教程的含义是很老的,因为它是为帆0.10,但它仍然是有效的。您正在使用护照本地策略。当你定义你的策略时,你有一个额外的参数。删除这个'local-login'参数。

您目前有:

passport.use('local-login',new LocalStrategy(function... 

替换上面:

passport.use(new LocalStrategy(function... 

然后当你调用验证指定的“本地”而不是“本地登录”的策略,所以你必须:

passport.authenticate(
    'local', 
    function (req,res)... 

'本地'与护照本地。如果我们使用的护照HTTP承载的策略,那么你会打电话

passport.authenticate('bearer', function... 

我通常把我的策略定义在/config/bootstrap.js与会话序列化和助手查找用户一起。然后我的控制器 - >服务进行passport.authenticate调用。