首页 > 解决方案 > 如何使用 Authentication Devise 调用 Sign_in 方法?

问题描述

在我的代码中,我编写了我的注册代码,之后我调用了 sign_in 方法以返回包含在标头中的客户端、uid 和访问令牌的用户,但是在调用 sign_in 时,它仅返回用户对象而不包括标头(uid,访问令牌,客户端)

  promoter = User.find_by_email(params[:email])
  if(promoter)
    render json: {message:"this email is already exist"} , status: 422
  else

     @promoter = Promoter.new(promoter_params)


     user = User.create(:email => params[:email],:password => params[:password],:user_role_id => 4)

    @promoter.user_id = user.id

    if @promoter.save 
      resource = User.find_by_email(params[:email])
      puts(resource)
      if resource.valid_password?(params[:password])
        puts("user ok ")
        r = sign_in :user, resource
        render json: r,:methods => [:uid,:client] , status: 200
      end

    else
      render json: @promoter.errors , status: 422
    end
  end

结果是

"exception": "#<NoMethodError: undefined method `client' for #<User:0x00007f67d46df018>>",

标签: ruby-on-railsrubygems

解决方案


我用它来调用api

     puts "#{request.protocol}#{request.host_with_port}"
     params = {"email" => "test8@gmail.com", "password" => "12121212"}
     x = Net::HTTP.post_form(URI.parse("#{request.protocol}#{request.host_with_port}/auth/sign_in"), params)
     render json: x.body

但它也无法呈现标题


推荐阅读