Ember Simple Auth немедленно аннулирует сеанс после аутентификации с помощью Torii.

Я пытаюсь настроить Torii с моим собственным потоком OAuth и Ember-Simple-Auth. Я могу получить успешное событие аутентификации, но сразу после аутентификации срабатывает триггер invalidateSession, что приводит к завершению сеанса. Я вижу это, перехватывая sessionInvalidated() в /app/routes/application.js (у которого есть ApplicationRouteMixin).

Кто-нибудь из вас сталкивался с этим? Есть ли что-то особенное, что может вызвать немедленную проверку сеанса? Мы будем очень признательны за любые советы.

РЕДАКТИРОВАТЬ: я думаю, что это связано с всплывающим кодом torii, потому что первый возврат работает, а второй - нет. есть идеи?

import OAuth2 from 'torii/providers/oauth2-code';
import {configurable} from 'torii/configuration';

export default OAuth2.extend({
  name: 'api',
  init() { this.set('clientID', this.get('apiKey')); },

  baseUrl: configurable('baseUrl'),

  redirectUri: configurable('redirectUri'),
  responseParams: ['access_token', 'user_id', 'first_name'],

  requiredUrlParams: ['client_id', 'redirect_uri', 'response_type'],

  open() {
    let name        = this.get('name');
    let url         = this.buildUrl();
    let redirectUri = this.get('redirectUri');
    let responseParams = this.get('responseParams');

    // this return works
    return { 'yes' : 'no' }

    // this return causes the immediate invalidation
    return this.get('popup').open(url, responseParams).then((authData) => {
      var missingResponseParams = [];

      responseParams.forEach(function(param){
        if (authData[param] === undefined) {
          missingResponseParams.push(param);
        }
      });

      if (missingResponseParams.length){
        throw new Error("The response from the provider is missing " +
              "these required response params: " + missingResponseParams.join(', '));
      }

      return {
        access_token: authData.access_token,
        first_name: authData.first_name,
        user_id: authData.user_id,
        provider: name,
        redirectUri: redirectUri
      };
    });
  }
});

person shicholas    schedule 03.03.2016    source источник
comment
У меня точно такая же проблема FWIW. Я добавил операторы debugger в хуки sessionAuthenticated и sessionInvalidated в ApplicationRouteMixin. После авторизации я нажимаю первую инструкцию отладчика и вижу учетные данные аутентификации в localStorage, затем я нажимаю вторую инструкцию отладчика, и учетные данные аутентификации исчезают.   -  person danpaz    schedule 16.03.2016
comment
@danpaz проверьте это: github.com/simplabs/ember-simple-auth/ тянуть/931. Эта ветка сработала для меня, надеюсь, сработает и для вас.   -  person shicholas    schedule 17.03.2016
comment
Работал для меня, спасибо!   -  person danpaz    schedule 17.03.2016


Ответы (2)


реальный ответ использует эту вилку: https://github.com/simplabs/ember-simple-auth/pull/931 (надеюсь, он скоро появится в мастере).

person shicholas    schedule 17.03.2016

Возможно, у вас где-то есть this.get('session').invalidate();. Вероятно, в одном из свойств действия вашего контроллера. Обычно вы указываете это в своих действиях для кнопки выхода из системы. Возможно, вы случайно скопировали и вставили. Если вы опубликуете какой-нибудь код, я смогу посмотреть на него еще немного.

person Caleb Macdonald Black    schedule 04.03.2016
comment
спасибо за ответ, к сожалению это не то. Я отредактировал свой вопрос с большим количеством кода. Я думаю, что это должно что-то делать с всплывающим окном тории. - person shicholas; 04.03.2016