未知的身份验证策略护照
Posted
技术标签:
【中文标题】未知的身份验证策略护照【英文标题】: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 策略是否需要任何其他步骤?
【问题讨论】:
【参考方案1】:尝试将此添加到您的 passport.use 声明中:
passport.use('windowslive', new WindowsLiveStrategy(
...
【讨论】:
以上是关于未知的身份验证策略护照的主要内容,如果未能解决你的问题,请参考以下文章
无法运行护照登录策略。身份验证错误~ TypeError: Cannot read property 'authenticate' of undefined