Sul*_*aig 6 json ruby-on-rails devise
我正在使用devise_token_auth gem创建rails API .我想要的不仅仅是此gem在成功sign_in后返回的标头中的标记,还有一些与用户关联的表.
从devise_token auth gem成功登录后,如何在重写默认JSON响应后发送自定义JSON?
我自己解决了。
首先,config/routes.rb我添加了自定义会话控制器:
mount_devise_token_auth_for 'User', at: 'auth', skip: [:omniauth_callbacks], controllers: { registrations: "registrations", sessions: "sessions" }
Run Code Online (Sandbox Code Playgroud)
然后创建一个名为的文件app/controllers/sessions_controller.rb并添加以下内容:
class SessionsController < DeviseTokenAuth::SessionsController
def render_create_success
render "users/success"
end
end
Run Code Online (Sandbox Code Playgroud)
然后,我创建了一个名为的文件,app/views/users/success.json.jbuilder并添加了json数据,如下所示:
json.data @resource
json.groups @resource.groups do |group|
json.id group.id
json.name group.name
end
Run Code Online (Sandbox Code Playgroud)
因此,在成功登录后,我可以提供自定义JSON。
在用户模型中,创建方法" token_validation_response ".例:
def token_validation_response
{test: 'this is custom data'}
end
Run Code Online (Sandbox Code Playgroud)
或者,如果要添加自定义字段,可以这样做:
def as_json(options={})
super(options).merge({test: 'this is custom field'})
end
Run Code Online (Sandbox Code Playgroud)