ruby-on-rails - 如何使用 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>>",
解决方案
我用它来调用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
但它也无法呈现标题
推荐阅读
- c# - C# API 返回 XML 响应
- grep - grep:提取前缀和后缀之间的内容
- java - 我在 intellij 的 javax.mail.MimeMessage 处收到 NoClassDefFoundError
- cordova - Ionic Cordova OneSignal + 华为 InAppAlert 问题
- python - 计算每个 X 值的 Y 值 - MultiIndex
- ruby - 无法在 Ubuntu 上安装 Ruby
- python - Spacy 基于规则的匹配问题
- c# - 如何在 MSAGL 中将特定点设置为节点
- reactjs - 为什么在 react js 中使用 .map() 时我的选项列表为空?
- swift - instagram 的自定义导航栏是如何创建的?