Каков наилучший способ добавить еще один шаг в каждую фразу? - PullRequest
0 голосов
/ 09 ноября 2011

Я хотел бы добавить еще один шаг в последовательность аутентификации OpenId, определенную в модуле openid Everyauth .

Я не уверен, предназначен ли Everyauth для этого.Автор упоминает , что его можно настроить, но примеров нет, и я все еще являюсь новичком в javascript.

Например, модуль OAuth в everyauth определяет свои шаги обратного вызова аутентификации следующим образом:

.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.

Ответы [ 2 ]

4 голосов
/ 28 марта 2012

Уже довольно давно этот вопрос поднимался, но ответа не было.Я столкнулся с той же проблемой только сейчас и задокументировал свой ответ для других нубов вроде меня:)

Я использую аутентификацию Facebook и хотел выполнить некоторую пользовательскую обработку, прежде чем ответ будет отправлен клиенту после успешного завершения.аутентификация.Вместо того, чтобы добавить еще один шаг, я переопределил шаг 'sendResponse', добавил свою собственную логику, а затем просто делегировал супер реализацию 'sendResponse'.Вот теперь мой код выглядит так -

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

Вы можете переопределить его для определенного модуля, такого как Facebook, как показано выше, или это можно сделать на уровне «каждого модуля».

Надеюсьэто помогает.

0 голосов
/ 08 декабря 2012

Другим вариантом является addToSession Step.Он доступен в модулях facebook, linkedin и паролей.Я обнаружил, что sendResponse не работает для модуля пароля.Это упрощает работу, если ваша пользовательская логика использует переменную сеанса.

...