更改Rails身份验证所需的响应

时间:2016-06-06 21:31:54

标签: ruby-on-rails ruby json devise

我有一个用户模型和登录路线。使用ember-simple-auth,每当我发送数据进行身份验证时,数据都必须采用以下格式:

{"password"=>"[FILTERED]", "email"=>"admin@admin.com"}

但是,我希望数据采用以下格式:

{"user"=>{"password"=>"[FILTERED]", "email"=>"admin@admin.com"}}

我该怎么改变? 谢谢。 代码:https://github.com/ghoshnirmalya/hub-server

1 个答案:

答案 0 :(得分:1)

作为一种可能的方法,您可以覆盖resoure_params方法

class Api::V1::SessionsController < DeviseTokenAuth::SessionsController

  private

  def resource_params
    params.permit(user: params_for_resource(:sign_in))[:user]
  end
end

路由

namespace "api" do
  namespace "v1" do
    mount_devise_token_auth_for 'User', at: 'auth', controllers: {
      sessions:  'api/v1/sessions'
    }
    resources :users
  end
end

然后,如果你的参数看起来像

{ 
    "user": {
        "email": "nirmalya.email@gmail.com",
        "password":"password"
    }
}

您将收到成功回复:

{
    "data": {
        "id": 1,
        "provider": "email",
        "uid": "nirmalya.email@gmail.com",
        "name": "Nirmalya Ghosh",
        "nickname": null,
        "image": null,
        "email": "nirmalya.email@gmail.com"
    }
}

但我强烈建议重构您的前端以满足devise_token_auth要求,并将参数传递为{email: "foo@mail.com", password: "password"}