【发布时间】:2020-08-02 11:33:36
【问题描述】:
这个问题与:Does Ember Octane Route class support using mixins? Mixins 在 Ember Octane 中被正式弃用。
问题:
替换 Ember mixin 的最佳选择是什么?如何实现它?
上下文:
我有自定义 mixin 来扩展 ember-simple-auth (~v1.8.2) 提供的功能,在创建方法时它不可用(见下文)。我目前正在使用 ember-simple-auth 3.0.0 https://github.com/simplabs/ember-simple-auth。如您所见,在 github 上的文档中,他们似乎在 Ember Octane 上使用了自己的 mixin:
// 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 也不知道他们想要走哪条路线:https://github.com/simplabs/ember-simple-auth/issues/2185
选项:
- 纯原生类,通过类继承共享功能。
- 可以在多个类中导入和使用的实用函数。
- 可以注入多个类的服务,共享 它们之间的功能和状态。
我有以下身份验证混合:
- Application Route: 处理用户是否登录以及用户是否开启了双因素认证(2FA),如果开启,则验证用户是否通过了2FA认证。这是因为 simple auth 在开发 mixin(s) 时没有提供 2FA
- Authenticated Route:确保用户已登录。如果他们未登录,则将用户路由到登录页面。登录后,他们会被引导回最初尝试访问的页面
- UnAuthenticated Route:防止已登录的用户前往某些已登录的用户不应前往的路线
【问题讨论】:
标签: ember.js ember-simple-auth