【问题标题】:Unknown authentication strategy passport未知的身份验证策略护照
【发布时间】:2015-09-10 20:42:30
【问题描述】:

我已经使用基本模板设置了 MEAN.IO 应用程序,并且正在尝试添加 Windows Live 和 Yahoo 护照身份验证依赖项。

我已经 npm 安装了这两个依赖项并设置了代码(见下文),就像 Facebook 和 Google 等其他护照方案(预安装并且正在运行)一样。


passport.js:

YahooStrategy = require('passport-yahoo-oauth').Strategy,
WindowsLiveStrategy = require('passport-windowslive').Strategy,
GoogleStrategy = require('passport-google-oauth').OAuth2Strategy,

// Use windows live strategy
    passport.use(new WindowsLiveStrategy({
        clientID: config.strategies.windowslive.clientID,
        clientSecret: config.strategies.windowslive.clientSecret,
        callbackURL: config.strategies.windowslive.callbackURL
      },
      function(accessToken, refreshToken, profile, done) {
        User.findOne({
          'windowslive.id': profile.id
        }, function(err, user) {
          if (user) {
            return done(err, user);
        }
        user = new User({
          name: profile.displayName,
          email: profile.emails[0].value,
          username: profile.emails[0].value,
          provider: 'windowslive',
          windowslive: profile._json,
          roles: ['authenticated']
        });
        user.save(function(err) {
          if (err) {
            console.log(err);
            return done(null, false, {message: 'Windows Live login failed, email already used by other login strategy'});
          } else {
            return done(err, user);
          }
        });
      });
    }
  ));

用户路由(server/users/routes.js)

// Setting the windows live oauth routes
app.route('/api/auth/windowslive')
  .get(passport.authenticate('windowslive', {
    failureRedirect: '/login',
    scope: ['wl.signin','wl.basic']
  }), users.signin);

app.route('/api/auth/windowslive/callback')
  .get(passport.authenticate('windowslive', {
    failureRedirect: '/login'
  }), users.authCallback);

我不断收到错误:未知身份验证策略“windowslive”和错误:未知身份验证策略“yahoo”,但 facebook 和 google 路由工作正常。知道为什么吗?配置新的 Passport 策略是否需要任何其他步骤?

【问题讨论】:

    标签: javascript node.js authentication passport.js mean-stack


    【解决方案1】:

    尝试将此添加到您的 passport.use 声明中:

    passport.use('windowslive', new WindowsLiveStrategy({
    ...
    

    【讨论】:

      猜你喜欢
      • 2018-12-13
      • 1970-01-01
      • 2016-03-11
      • 2019-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-21
      • 2018-06-08
      相关资源
      最近更新 更多