簡體   English   中英

如何在devise_token_auth gem中成功登錄后返回自定義JSON?

[英]How to return custom JSON after successful sign_in in devise_token_auth gem?

我正在使用devise_token_auth gem創建rails API。 我想要的不僅僅是這個gem在成功的sign_in之后返回的標頭中的標記,還有一些與用戶關聯的表。

從devise_token auth gem成功登錄后,如何在重寫默認JSON響應后發送自定義JSON?

在用戶模型中,創建方法“ token_validation_response ”。 例:

def token_validation_response
  {test: 'this is custom data'}
end

或者,如果要添加自定義字段,可以這樣做:

  def as_json(options={})
    super(options).merge({test: 'this is custom field'})
  end

我解決了我自己。

首先在config/routes.rb我添加了自定義會話控制器:

mount_devise_token_auth_for 'User', at: 'auth', skip: [:omniauth_callbacks], controllers: { registrations: "registrations", sessions: "sessions" }

然后創建了一個名為app/controllers/sessions_controller.rb的文件,並添加了以下內容:

class SessionsController < DeviseTokenAuth::SessionsController
  def render_create_success
    render "users/success"
  end
end

然后我創建了一個名為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

因此,我可以在成功登錄后提供自定義JSON。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM