我有以下场景:
- Rails应用程序与用户和管理设计模型,所以我有两个范围。
-
创建于路由器上的ember应用:
Router.map(function() { this.route('panel', function() { this.route('login'); this.route('logout'); }); this.route('admin', function() { this.route('login'); this.route('logout'); }); });
-
我使用
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
是真实的,我不知道哪些范围登录。
这是最好的方法:
- 在会话 上添加
- 为admin用户创建新会话
role
我通过为每个作用域创建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上的设计,你可以一次登录多个范围)。