как использовать аутентификацию ember-simple-oauth2 от imy CustomAuthenticator

Я могу успешно пройти аутентификацию, используя свой собственный customAuthenticator.

Мне нужно использовать customAuthenticator, так как внутренний сервер аутентификации требует, чтобы заголовок запроса имел client_id и client_secret.

Что-то вроде этого.

  headers: {
           "Authorization": "Basic " + btoa(credentials.client_id + ":" +  
            credentials.client_secret) ,

           "API-KEY": window.ENV.api_key
           },

однако я вижу, что в файлах simple-auth-oauth2.js есть несколько служебных функций, которые использует метод аутентификации.

Такие методы, как: absolutizeExpirationTime(response.expires_in); scheduleAccessTokenRefresh (response.expires_in, expiresAt, response.refresh_token);

Мой вопрос в том, как мне вызвать эти методы внутри simple-auth-oauth2 из моего customAuthenticator.

Я не хочу копировать эти методы в свой файл customAuthenticator.....


person user3630294    schedule 18.07.2014    source источник


Ответы (1)


Вы можете просто определить собственный аутентификатор, расширяющий аутентификатор OAuth 2.0. Единственный метод, который вам нужно переопределить, это makeRequest, например:

var CustomAuthenticator = Authenticators.OAuth2.extend({
  makeRequest: function(url, data) {
    data.client_id     = …;
    data.client_secret = …;
    return this._super(url, data);
  }
})
person marcoow    schedule 18.07.2014
comment
Но как мне настроить заголовок запроса... серверная служба аутентификации ожидает, что в заголовке запроса будут client_id и client_secret, введенные в заголовок следующим образом :headers: { Авторизация: Basic + btoa(credentials.client_id + : + учетные данные.client_secret), API-КЛЮЧ: window.ENV.api_key }, - person user3630294; 18.07.2014
comment
Если вы хотите установить заголовок, вы должны переопределить makeRequest без вызова _super, а вместо этого вызвать Ember.$.ajax самостоятельно и указать параметр headers. - person marcoow; 19.07.2014