使用Rails4中的emberjs和设备进行客户端身份验证

时间:2013-05-17 06:04:21

标签: devise ember.js ruby-on-rails-4

使用用户资源是每个应用程序的重要组成部分,因此它应该尽可能自动化。 至于Ember,我找到了一个教程https://github.com/heartsentwined/ember-auth-rails-demo/wiki 其中描述了它如何与基于设计的认证系统进行通信。而且,哇,这是一个很糟糕的样板:) Rails4的新设计有什么变化或者事情是一样的吗?

1 个答案:

答案 0 :(得分:2)

ember-auth dev这里。


针对googlers的

修改/更新:我现在已经构建了rails 4个应用,其中包含deviseemberember-auth。除了以下两个问题,一切都运转良好。

  1. devise >= 3.1 已移除 tokenAuthenticatable模块。所以我在Gemfile

    中声明
    gem 'devise', '>= 3.0', '< 3.1' 
    
  2. ember-data正在从ActiveModelSerializersjson-api漂移 。问题是,json-api本身甚至不稳定。快速简便的解决方法是将DS.RESTAdapter替换为符合DS.ActiveModelAdapter约定的ActiveModelSerializers。它应该“正常工作”。

  3. 所以,是的,ember-auth确实支持rails4,因为没有什么可以解决它本身


    (上一个答案:)

    我没有使用rails 4的经验,但ember-auth本身并不依赖于rails 3,或者实际上rails / devise。唯一的期望是服务器公开的一组API。[1] docs描述了服务器API的期望。

    至于使用rails作为后端,ember-data明确声明支持(并遵守)active_model_seriailzers,这为从json模型生成rails响应提供了便利方法。但是,由于身份验证操作不符合“标准”REST ful模型响应,因此ember-auth-rails-demo教程本身会手工制作预期的响应。例如:

    def create
      # ...
      data = {
        user_id: resource.id,
        auth_token: resource.authentication_token,
      }
      if params[:remember]
        resource.remember_me!
        data[:remember_token] = remember_token(resource)
      end
      render json: data, status: 201
    end
    

    因此,对于rails 4兼容性,我会根据需要对devise兼容性,任何ActiveRecord更改以及一般其他gem兼容性进行更多调查。至于ember-auth,它仍然会手工制作预期的回复,如docs中所述。

    [1]:通过编写自定义adapters,即使是这种期望也可以自定义。高级用法,但如果需要,我可以详细说明。