在 Sailsjs 中使用本地护照时无响应

Posted

技术标签:

【中文标题】在 Sailsjs 中使用本地护照时无响应【英文标题】:No Response when using passport-local with Sailsjs 【发布时间】:2014-03-27 09:49:10 【问题描述】:

我正在尝试使用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 到 /login,但我得到的唯一控制台消息是:

护照快递中间件 登录控制

含义它没有调用 LocalStrategy 回调,我收到“0 NO RESPONSE”错误.. 这是为什么呢?

【问题讨论】:

LoginController 上的 login 方法中有错字:passport.authenticate('local', ...), function() 应该是 passport.authenticate('local', ..., function())。另外,我会将passport 调用移至policy 您的评论也很有帮助,谢谢! 【参考方案1】:

您在这里调用passport.authenticate 的方式有问题:

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

passport.authenticate 返回一个应该在请求/响应时调用的函数。

有关 Sails/Passport 集成的一些示例,请参见此处:

https://github.com/webjames/sails-passport-example https://github.com/RelativeMedia/sails-PassportLocalMongoExample

【讨论】:

以上是关于在 Sailsjs 中使用本地护照时无响应的主要内容,如果未能解决你的问题,请参考以下文章

Android:OnClickListener 在初始加载时无响应?

加入会议时无响应 SmackException NoResponseException

Spring webflow + Jpa + Hibernate运行时无响应问题处理

关于VS2012 生成或调试时无响应的另一种情况

text 从华为P9软键盘删除时无响应到InputConnectionWrapper

创建Ec2实例时无响应启动SSH客户端