0

私はパスポートフレッシュブック戦略を使用していますが、これは他の戦略とほとんど同じですが、適切に作成されていないと思います (何も欠けていない場合)。私は、変数を定義フェーズでミドルウェアに渡す必要があることを発見しました。これは、ルート ハンドラーを介してユーザーからのみ取得できます。

passport.use(new FreshbooksStrategy({
    // This is the USER's subdomain, who's supposed to login
    subdomain: SUBDOMAIN,
    ...

上記を設定するにはsubdomain、まずユーザーから取得する必要があります

app.get('/login', function(req,res){
    res.send('<form>Enter your freshbooks account URL or subdomain(..submit)</form>')
});
app.post('/login', function(req,res){
    var subdomain = req.body.subdomain.split('.')[0].split('/').pop();
});

subdomainでは、上記のパスポート戦略のミドルウェア定義でこれを設定するにはどうすればよいでしょうか?

戦略自体を変更する必要があるかもしれませんが、どのように進めればよいかわかりません。何かアイデアはありますか?

github の問題

4

2 に答える 2

2

Passport には、戦略でリクエスト オブジェクトにアクセスできるようにする「passReqToCallback」オプションがあります。このオプションを有効にすると、req が最初の引数として検証コールバックに渡されます。

ここでは、例で使用されています。(ドキュメントから取得)

passport.use(new TwitterStrategy({
    consumerKey: TWITTER_CONSUMER_KEY,
    consumerSecret: TWITTER_CONSUMER_SECRET,
    callbackURL: "http://www.example.com/auth/twitter/callback",
    passReqToCallback: true
  },
  function(req, token, tokenSecret, profile, done) {
    if (!req.user) {
      // Not logged-in. Authenticate based on Twitter account.
    } else {
      // Logged in. Associate Twitter account with user.  Preserve the login
      // state by supplying the existing user after association.
      // return done(null, req.user);
    }
  }
));
于 2016-04-07T15:58:45.437 に答える
0

私はライブラリをハッキングすることになり、ある時点でそれを機能させました。最終的に、私はプロジェクトを中止したので、共有する修正はありません。しかし、戦略を変更することを考えているなら、あなたは正しい道を進んでいます。

于 2015-07-02T13:35:31.007 に答える