Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 设计的自定义登录_Ruby On Rails 3_Devise - Fatal编程技术网

Ruby on rails 3 设计的自定义登录

Ruby on rails 3 设计的自定义登录,ruby-on-rails-3,devise,Ruby On Rails 3,Devise,现在我正在使用designegem,成功授权后,它会将用户重定向到根页面 如何在操作中修改签名以返回json数组,如下所示:{“auth\u result”:“1”}而不是重定向 可能吗? 我还没有在Deviate wiki中找到这些方法。Deviate目前不处理JSON响应-请参阅。因此,您必须创建一个自定义会话控制器来处理您的响应。看一看图片,想一想。我编写了一些粗略的伪代码,希望能帮助您开始: class Users::SessionsController < Devise::Ses

现在我正在使用
designe
gem,成功授权后,它会将用户重定向到根页面

如何在操作中修改
签名以返回json数组,如下所示:
{“auth\u result”:“1”}
而不是重定向

可能吗?
我还没有在Deviate wiki中找到这些方法。

Deviate目前不处理JSON响应-请参阅。因此,您必须创建一个自定义会话控制器来处理您的响应。看一看图片,想一想。我编写了一些粗略的伪代码,希望能帮助您开始:

class Users::SessionsController < Devise::SessionsController
  def create
    resource = warden.authenticate!(:scope => resource_name, :recall => "#{controller_path}#new")
    set_flash_message :notice, :signed_in
    # Remove sign_in_and_redirect(resource_name, resource) and replace with the following, I think
    sign_in(resource_name, resource)
    respond_to do |format|
      format.json { render :json => hash_of_things_to_return.to_json }
    end
  end
end
class用户::sessioncontrollerresource_name,:recall=>“#{controller_path}#new”)
设置\u闪存\u消息:通知,:已登录
#删除sign_in_和重定向(resource_name,resource)并替换为以下内容,我认为
登录(资源名称、资源)
回应待办事项|格式|
format.json{render:json=>hash_of_things_to_return.to_json}
结束
结束
结束
然后,在routes.rb文件中,您必须指定新的控制器-
design\u for:users,:controllers=>{:sessions=>“users/sessions”}


希望这有帮助

谢谢你的回答!我已经成功地切换到我自己的身份验证代码,我感到很高兴;)