我正在玩通行证,并以这种方式配置我的 twitter 登录:

passport.use(new TwitterStrategy({
    consumerKey: '*****',
    consumerSecret: '*****',
    callbackURL: "http://blabla/callback"
  },
  function(token, tokenSecret, profile, done) {
    done(null, profile)
  }
));
我希望能够在运行时根据登录的用户配置以下值:(consumerKey, consumerSecret, callbackURL)。也就是说,每个用户都将拥有他们需要在 Twitter 上注册的 Twitter 应用程序。
有什么建议吗?

最佳答案

无需使用 passport.use() 提前注册策略,策略可以直接传递给 authenticate() (而不是传递策略名称)。
例如:

function login(req, res, next) {
  var user = req.user;
  var consumerKey = getConsumerKeyForUser(user);
  // Create a strategy instance specifically for this user.
  var strategy = new TwitterStrategy({ consumerKey: consumerKey }, ...);
  // Authenticate using the user-specific strategy
  passport.authenticate(strategy)(req, res, next);
}
可以在此处找到有关此技术的更多信息:https://medium.com/passportjs/authenticate-using-strategy-instances-49e58d96ec8c

关于javascript - 如何动态配置 Passportjs 策略?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43072392/

10-12 15:19