我有以下场景:
- 具有用户和管理员设计模型的 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'); }); });
一旦我的应用程序是 Ember 2.0,我就会使用
jj-abrams
分支
同时在 /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 服务。一旦用户或管理员登录,session.isAuthenticated
为真,我不知道哪些范围已登录。
哪种方法最好:
- 在用户回复上添加一个
角色
并在 session 中设置 - 为管理员用户创建一个新 session
最佳答案
我通过创建 3 authenticators 解决了这个问题对于每个范围,我都会处理每个范围。
一旦我不使用其他身份验证器 (OAuth2),这是一个特殊的解决方案,但现在我可以检查 authenticator:user
, authenticator:admin
, authenticator:manager
用于登录。
我在路由上创建了检查,所以用户只能访问他的面板,管理员可以访问用户和管理面板,经理可以访问整个系统。
我已经在 github 上发布了 ember 和 API:
- https://github.com/fernandes/ember-auth-web为了 Ember
- https://github.com/fernandes/ember-auth-api用于设计 api
ps:我认为为每个范围创建 session 会更好,但我不知道该怎么做(以及是否更好),在此解决方案中,您可以一次登录一个范围(不像设计在 Rails 上,您可以同时记录多个范围。
关于authentication - 具有多个设计范围的 Ember 简单例份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32409224/