Ember Octane Как конвертировать пользовательские миксины - PullRequest
2 голосов
/ 20 апреля 2020

Этот вопрос относится к: Поддерживает ли класс Ember Octane Route использование миксинов? В Ember Octane официально объявлены устаревшими миксины.

Вопрос:

Каков наилучший вариант замены миксинов Ember и как его реализовать?

Контекст:

У меня есть собственные миксины, которые расширяют функциональность, предлагаемую ember-simple-auth (~ v1.8.2), которая не была доступна в то время, когда методы были созданы (см. ниже). В настоящее время я использую ember-simple-auth 3.0.0 https://github.com/simplabs/ember-simple-auth. В документации по github они, похоже, используют свои собственные миксины на Ember Octane, как вы можете видеть:

// my-engine/addon/routes/index.js
import Route from '@ember/routing/route';
import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';

export default class IndexRoute extends Route.extend(AuthenticatedRouteMixin) {
  triggerAuthentication() {
    this.transitionToExternal('login');
  }
}

Похоже, что я не единственный, у кого есть эта проблема, так как Simple Auth не знает какой маршрут они хотят go вниз либо: https://github.com/simplabs/ember-simple-auth/issues/2185

Опции:

  • Чистые нативные классы, обмен функциями через наследование классов.
  • Служебные функции, которые можно импортировать и использовать в нескольких классах.
  • Службы, которые можно внедрять в несколько классов, совместно использующие функции и состояние между ними.

I иметь следующие миксины аутентификации:

  1. Маршрут приложения: Определяет, вошел ли пользователь в систему и включена ли для него двухфакторная аутентификация (2FA), и если это включен, он проверяет, что пользователь прошел проверку подлинности через 2FA. Это связано с тем, что простой auth не предлагал 2FA во время разработки mixin (s)
  2. Аутентифицируемый маршрут: Проверяет, что пользователь вошел в систему. Если он не вошел в систему, то пользователь перенаправляется на страницу входа. После входа в систему они направляются обратно на страницу, с которой они первоначально пытались go до
  3. Неаутентифицированный маршрут: Запрещает зарегистрированным пользователям переходить на определенные маршруты, которые вошли в систему, пользователи не должны go до

Ответы [ 2 ]

5 голосов
/ 20 апреля 2020

Во-первых, я хочу пояснить, что миксины не являются "официально устаревшими" в Ember, и, насколько мне известно, в них даже нет активных RF C. Как объясняется в Руководствах по обновлению , компоненты Glimmer не поддерживают миксины из-за отсутствия расширения EmberObject, но ранее существовавшие классы фреймворка (Route, Controller и т. Д. c) обязательно должны это сделать, или это может привести к поломке. изменить.

Нет лучшего способа заменить миксины, так как это зависит от использования API. Если вы спрашиваете, как заменить ember-simple-auth mixins, я отвечу, что вы не сможете, пока само дополнение не предоставит альтернативные API. Миксины и пример кода, который вы разместили, будут продолжать работать в обозримом будущем.
Вы можете увидеть пример , использующего наследование классов для совместного использования функциональности в этом PR .

1 голос
/ 20 апреля 2020

когда я мигрировал в ember Octane, я попытался заменить ember-simple-auth mixins, я обнаружил, что это заняло бы у меня много времени, чем переписывание моей собственной службы аутентификации, мой пример в этом примере, я использую куки, Сервис аутентификации Если вы не используете куки, вы можете настроить свой адаптер так, чтобы он включал токен в заголовки

...