Ruby on rails 设计don';我不想在登录后返回JSON

Ruby on rails 设计don';我不想在登录后返回JSON,ruby-on-rails,json,devise,ruby-on-rails-4,Ruby On Rails,Json,Devise,Ruby On Rails 4,我尝试配置我的rails应用程序,使其能够通过JSON请求进行登录(这一部分看起来很有效),之后我不想被重定向,我只想让登录返回一个JSON和用户电子邮件以及其他一些东西 有人能告诉我怎么做吗? 我在这个gem和design中使用了rails的最新版本 目前,我已经创建了一个自定义会话控制器,但我不知道该在其中放置什么。 我是rails新手,所以可能很简单,但我找不到最新的答案 谢谢 更新:关于信息,我的主要目标是在登录成功后返回与用户关联的身份验证令牌覆盖Desive::SessionCont

我尝试配置我的rails应用程序,使其能够通过JSON请求进行登录(这一部分看起来很有效),之后我不想被重定向,我只想让登录返回一个JSON和用户电子邮件以及其他一些东西

有人能告诉我怎么做吗? 我在这个gem和design中使用了rails的最新版本

目前,我已经创建了一个自定义会话控制器,但我不知道该在其中放置什么。 我是rails新手,所以可能很简单,但我找不到最新的答案

谢谢


更新:关于信息,我的主要目标是在登录成功后返回与用户关联的身份验证令牌

覆盖Desive::SessionController的会话创建方法

devise_for :users, :controllers => { :sessions => 'users/sessions'}
在app/controllers/users/sessions_controller.rb中添加控制器文件,并继承designe::sessioncontroller,如下所示

class Users::SessionsController < Devise::SessionsController

  def create
    self.resource = warden.authenticate!(auth_options)
    set_flash_message(:notice, :signed_in) if is_flashing_format?
    sign_in(resource_name, resource)
    yield resource if block_given?
    respond_with resource, :location => after_sign_in_path_for(resource) do |format|
      format.json {render :json => resource } # this code will get executed for json request
    end
  end

end

您还可以使用yield块创建额外的代码,并在点击redirect命令之前返回

def create
  super do
    render json: { user: current_user, 
                   token: form_authenticity_token }.to_json and return
  end
end
和return
将阻止控制器在屈服块后继续运行


form\u authenticity\u token
-我必须在登录后重置标头中的csrf token。这是获取新csrf令牌的一种方法

谢谢你的回答,但是当我这样做的时候,我总是有一个重定向,在这里我的控制台日志我只是在/users/sign#u上发送一个put请求,并使用以下数据“Processing by Api::SessionController#create as/”,尝试启动JSON请求,它应该作为“Processing by Api::SessionController#create as JSON”登录到日志文件中。很久以前我就做过同样的事情,幸运的是,今天我必须再次做同样的事情。因此,请告诉我,即使将请求类型更改为JSON,您是否还会遇到任何问题。我使用curl-XPOST-H“Content-type:application/JSON”“”-d'{“user”:{“email”:test@a.fr,“password”:“12345678”}}但仍然不起作用,无法通过“Api::SessionController 35; create as/as JSON”获得处理正如您所说,尝试将.json添加到url--curl-XPOST-H“Content-Type:application/json”“localhost:3000/users/sign_-in.json”-d'{“用户”:{“电子邮件”:”test@a.fr“,”密码“:“12345678”}有效!太棒了,非常感谢你的帮助