Ember 具有多个设计范围的简单身份验证

Ember Simple Auth with Multiple Devise Scopes

我有以下场景:

  1. Rails 具有用户和管理员设计模型的应用程序,所以我有两个范围。
  2. 创建于 ember 路由器上的应用程序:

    Router.map(function() {
      this.route('panel', function() {
        this.route('login');
        this.route('logout');
      });
      this.route('admin', function() {
        this.route('login');
        this.route('logout');
      });
    });
    
  3. 我正在使用 jj-abrams 分支,一旦我的应用程序是 Ember 2.0

同时在 /users/sign_in/admins/sign_in

上进行身份验证

我按照 https://github.com/simplabs/ember-simple-auth/tree/master/packages/ember-simple-auth-devise#server-side-setup 上的步骤操作,身份验证正常。

Ember 在创建身份验证器和适配器后点击了正确的 url,但问题是 ESA 只有一个会话服务。用户或管理员登录后 session.isAuthenticated 为真,我不知道登录了哪些范围。

哪种方法最好:

  1. 在用户回复中添加 role 并在会话中设置
  2. 为管理员用户创建一个新会话

我解决了这个问题,为每个范围创建了 3 个 authenticators,并且我处理了每个。

这是一个特殊的解决方案,一旦我不使用其他验证器(OAuth2),但现在我可以检查是否使用 authenticator:userauthenticator:adminauthenticator:manager 登录.

我创建了路由检查,所以用户只能访问他的面板,管理员可以访问用户和管理面板,经理可以访问整个系统。

我已经在 github 上发布了 ember 和 API:

ps:我认为为每个范围创建会话会更好,但我不知道该怎么做(以及是否更好),在此解决方案中,您可以登录一个范围一次(不像 rails 上的设计,你可以一次登录多个范围)。