【问题标题】:Using passport.js with yeoman and grunt for authentication将 passport.js 与 yeoman 和 grunt 一起使用进行身份验证
【发布时间】:2013-09-25 01:01:06
【问题描述】:

我正在尝试研究如何将 passport.js 与 grunt/yeoman 一起使用。我有以下内容:

// at the top of my gruntfile.js
var passport = require('passport');
var BasicStrategy = require('passport-http').BasicStrategy;

passport.use(new BasicStrategy(
  function(username, password, done) {
    return done(null, true); // I would expect this to always succeed, but still challenge for credentials
  }
));

// further down in my connect config.
livereload: {
    options: {
        middleware: function (connect) {
            return [
                lrSnippet,
                passport.initialize(),
                passport.authenticate('basic', { session: false }),
                mountFolder(connect, '.tmp'),
                mountFolder(connect, yeomanConfig.app)
            ];
        }
    }
}

对于每个请求,响应只包含unauthorized。删除对passport.authenticate 的调用使页面正常工作,但显然现在没有身份验证。我试过改变中间件的顺序,但没有帮助,而且我离 yeoman/grunt 的专家还差得很远,所以我不完全确定还能尝试什么......

任何帮助将不胜感激。

【问题讨论】:

  • 您是否在尝试授权时发送授权标头?
  • @vadim 是的,这一切在不通过护照时都有效。

标签: javascript node.js gruntjs yeoman passport.js


【解决方案1】:

我认为您需要在 BasicStrategy 回调中将对象传递给 done()。我记得,passport JS 使用这个对象在 express 应用程序中填充 req.user,因此我认为它可能需要一个 object 而不是 boolean

这是我在许多应用程序中使用的相同功能的一个更强大的示例:

  passport.use(new BasicStrategy(
    function(clientID, clientSecret, done) {
      AuthClient.findOne({ clientID: clientID }, function(err, client) {
        if (err) { return done(err); }
        if (!client) { return done(null, false); }
        if (client.secret != clientSecret) { return done(null, false); }
        return done(null, client);
      });
    }
  ));

如您所见,BasicStrategy 用于分析 clientID 和 clientSecret,这相当于您的用户名/密码组合。由于您实际上并没有像我的示例中所示从数据库中提取它,我希望如果您只是按照上面的建议并将{} 传递给done(null, {}),它可能会更好。

【讨论】:

  • 扫描源代码,我几乎可以肯定用户对象是什么并不重要。该代码仅进行验证以确保其真实性,然后将 req.user 设置为您传递的任何内容。
猜你喜欢
  • 2023-04-03
  • 2018-05-03
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-29
  • 2015-01-09
相关资源
最近更新 更多