0

everyauth openid モジュールで定義されている OpenId 認証シーケンスにもう 1 つのステップを追加したいと思います。

everyauth がこのために設計されているかどうかはわかりません。著者は、カスタマイズ可能であると述べていますが、例はなく、私はまだ JavaScript 初心者です。

たとえば、everyauth の OAuth モジュールは、認証コールバック手順を次のように定義します。

.get('callbackPath',                                                                                                                                               
     'the callback path that the 3rd party OAuth provider redirects to after an OAuth authorization result - e.g., "/auth/facebook/callback"')                     
  .step('getCode')
    .description('retrieves a verifier code from the url query')                                                                                                   
    .accepts('req res')  
    .promises('code')                                                       
    .canBreakTo('authCallbackErrorSteps')
  .step('getAccessToken')
    .accepts('code')
    .promises('accessToken extra')                                                                                                                                 
  .step('fetchOAuthUser')
    .accepts('accessToken')                                                                                                                                        
    .promises('oauthUser')
  .step('getSession')
    .accepts('req')
    .promises('session')
  .step('findOrCreateUser')                                                                                                                                        
    .accepts('session accessToken extra oauthUser')                                                                                                                
    .promises('user')
  .step('compile')
    .accepts('accessToken extra oauthUser user')
    .promises('auth')
  .step('addToSession')
    .accepts('session auth')                                                                                                                                       
    .promises(null)
  .step('sendResponse')
    .accepts('res')
    .promises(null)

そこに追加のカスタムステップが必要な場合はどうすればよいですか? everyauth モジュールのソース コードは変更しないでください。

4

2 に答える 2

4

この質問が提起されてからかなり時間が経ちましたが、答えはありません。私はちょうど今同じ課題に直面し、私のような他のノード初心者の利益のために私の答えを文書化しました:)

私は Facebook 認証を使用しており、認証が成功した後に応答がクライアントに送信される前に、いくつかのカスタム処理を実行したいと考えていました。別のステップを追加する代わりに、ステップ 'sendResponse' を上書きし、カスタム ロジックを追加してから、スーパー 'sendResponse' 実装に委譲しました。これが私のコードのようになりました-

everyauth
    .facebook
    .sendResponse(function(res) {
        console.log('##### sendResponse custom step called #####');
        // --> Your custom logic here
        this._super();
    });

上記のように facebook などの特定のモジュールに対してオーバーライドすることも、「すべてのモジュール」レベルで行うこともできます。

お役に立てれば。

于 2012-03-28T03:51:12.253 に答える
0

別のオプションはaddToSessionステップです。Facebook、LinkedIn、およびパスワードモジュールで利用できます。sendResponseパスワードモジュールでは機能しないことがわかりました。これにより、カスタムロジックがセッション変数に依存している場合に作業が簡素化されます。

于 2012-12-08T02:43:59.137 に答える