有没有人有经验在pre4中使用新路由器创建认证机制?
以下是我目前的一些想法:
我怀疑我应该使用Ember状态机,但我不知道如何继续.有人解决了这个问题吗?
Mik*_*tti 51
更新:就像@DustMason在他的回答中所说的那样,查看用于身份验证最佳实践的令人敬畏的强制措施.
为了将视图(Ember app)与服务器(Rails应用程序)完全分开,我想使用令牌认证.我可能会在Rails服务器上使用Devise.
说得通.
我需要类似于Ember app中的before_filter等价物,我可以检查是否有当前用户以及该用户是否设置了身份验证令牌.
您可以enter在路由上添加一个钩子,这大致相当于before_filter.但不确定这是检查身份验证令牌的最佳位置.
Rails服务器将在每次调用时返回当前的身份验证令牌.
说得通.我们使用cookie-auth并通过调用获取当前用户配置文件,/api/me但要么应该工作.
如果它返回一个空的身份验证令牌,则Ember应用程序应检测到此并转换到未经身份验证的状态,重定向到登录视图.
关于这种方法的是(与铁轨不同),"保护"对特定余烬路线的访问并不容易.无论用户总是弹出JS控制台并进入他们想要的任何状态.因此,不要考虑"如果经过身份验证,用户只能进入此状态",请考虑"如果未经身份验证的用户以某种方式导航到此路线,该怎么办"
我怀疑我应该使用Ember状态机,但我不知道如何继续.有人解决了这个问题吗?
我们的身份验证需求非常简单,因此我们没有发现需要状态机.相反,我们isAuthenticated在ApplicationController上有一个属性.application.hbs当用户未经过身份验证时,我们使用此属性用登录表单替换主视图.
{{if isAuthenticated}}
{{render "topnav"}}
{{outlet}}
{{else}}
{{render "login"}}
{{/if}}
Run Code Online (Sandbox Code Playgroud)
从ApplicationRoute,我们获取用户个人资料:
App.ApplicationRoute = Ember.Route.extend({
model: function() {
var profiles;
profiles = App.Profile.find({ alias: 'me' });
profiles.on("didLoad", function() {
return profiles.resolve(profiles.get("firstObject"));
});
return profiles;
}
});
Run Code Online (Sandbox Code Playgroud)
然后我们的ApplicationController根据返回的配置文件计算它的isAuthenticated属性.
sub*_*ing 19
我建议使用ember-auth.它实现了所有必需的功能,并且在我看来效果很好.
此外,同一作者还提供了Devise on Rails 的演示和教程.
我还实现了一个基于Ember-auth的基本Ember应用程序,带有Devise令牌认证和示例Oauth for Google和LinkedIn,可在此处找到并在此处发布:https://starter-app.herokuapp.com
Mar*_*ard 12
我最近从一个定制的auth系统改为使用ember-simple-auth,发现它很容易与我的应用程序集成.它满足所有OP要求,并且内置了对刷新令牌的支持.
他们有一个非常好的API和一组很好的例子.对基于令牌的身份验证感兴趣的任何人都应该检查它.
| 归档时间: |
|
| 查看次数: |
17869 次 |
| 最近记录: |