我有一个用户模型和登录路线。使用ember-simple-auth,每当我发送数据进行身份验证时,数据都必须采用以下格式:
{"password"=>"[FILTERED]", "email"=>"admin@admin.com"}
但是,我希望数据采用以下格式:
{"user"=>{"password"=>"[FILTERED]", "email"=>"admin@admin.com"}}
我该怎么改变? 谢谢。 代码:https://github.com/ghoshnirmalya/hub-server
答案 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"}