烬简单授权与多个设计范围



我有以下场景:

  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. 在会话
  2. 上添加role
  3. 为admin用户创建新会话

我通过为每个作用域创建3个身份验证器来解决这个问题,并处理每个。

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

我在路由上创建了检查,所以用户只能访问他的面板,admin可以访问用户和admin面板,而manager可以访问整个系统。

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

  • https://github.com/fernandes/ember-auth-web为余烬
  • https://github.com/fernandes/ember-auth-api为设计api

ps:我认为最好为每个范围创建会话,但我不知道如何做到这一点(如果它更好或不),在这个解决方案中,你可以一次登录一个范围(不像rails上的设计,你可以一次登录多个范围)。

相关内容

最新更新