Rails在

时间:2017-07-03 12:46:42

标签: ruby-on-rails devise

我正在关注this指南。我正在尝试使用HTTPie从服务器获得200个成功响应。

http -a peter@cleanpixel.nl POST http://localhost:3000/auth/sign_in

http: password for peter@cleanpixel.nl@localhost:3000:
HTTP/1.1 401 Unauthorized
Cache-Control: no-cache
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Vary: Origin
X-Request-Id: 173aea74-eef6-4070-b3bb-832f39a2a7ba
X-Runtime: 0.055728

{
    "errors": [
        "Invalid login credentials. Please try again."
    ]
}

但是我已经检查过,仔细检查过并仔细检查过细节。他们是对的。

这是我的user.rb:

class User < ActiveRecord::Base
  # Include default devise modules.
  devise :database_authenticatable,
         :registerable,
         :recoverable,
         :rememberable,
         :trackable,
         :validatable,
         :confirmable,
         :omniauthable
  include DeviseTokenAuth::Concerns::User
end

这是种子:

User.create({email: 'peter@cleanpixel.nl', password: "********", password_confirmation: "*********"})

application_controller:

class ApplicationController < ActionController::API
  include DeviseTokenAuth::Concerns::SetUserByToken
  include Response
end

我的HTTPie通话错了吗?我忘了在Ruby中配置某些东西或者在某个地方配置Devise吗?我见过人们在使用401和Devise时遇到了麻烦,但看起来解决方案适用于旧版本。

我现在尝试了一些卷曲命令,但没有成功。

curl -v -X "POST" "http://localhost:3000/auth/sign_in" -H "Content-Type: application/json; charset=utf-8" -d $'{"email": "user@example.com","password": "monkey67"}'返回:

  

curl:(3)第9栏中[globbing]无与伦比的近支撑/支架

如果我运行curl -v -H 'Content-Type: application/json' -H 'Accept: application/json' -X POST http://localhost:3000/auth/sign_in -d '{"email":"user@example.com", "password":"monkey67"}',我会:

  

注意:已经推断出不必要的使用-X或--request,POST。   *无法解析主机:应用程序   *关闭连接0   curl:(6)无法解析主机:应用程序   注意:已经推断出不必要的使用-X或--request,POST。   *无法解析主机:应用程序   *关闭连接1   curl:(6)无法解析主机:应用程序   注意:已经推断出不必要的使用-X或--request,POST。   *尝试:: 1 ...   * TCP_NODELAY设置   *连接到:: 1端口3000失败:连接被拒绝   *尝试127.0.0.1 ...   * TCP_NODELAY设置   *连接到localhost(127.0.0.1)端口3000(#2)   POST / auth / sign_in HTTP / 1.1   主持人:localhost:3000   User-Agent:curl / 7.54.1   接受: /   内容长度:25   内容类型:application / x-www-form-urlencoded

     
      
  • 上传已完全发送:25个字节中的25个   &LT; HTTP / 1.1 401未经授权   &LT; Content-Type:application / json;字符集= utf-8的   &LT;变化:起源   &LT;缓存控制:无缓存   &LT; X-Request-Id:e10c2484-30c9-49e0-b5c2-3404ba311ac7   &LT; X-Runtime:0.065560   &LT;转移编码:分块   &LT;   {“errors”:[“无效的登录凭据。请再试一次。”]} *连接#2主机localhost保持不变   curl:(3)[globbing]第18栏中无与伦比的紧密支撑/支架
  •   

1 个答案:

答案 0 :(得分:0)

我认为问题出在您的请求中,您只是传递了电子邮件,您也需要添加密码。如果您正在使用HHTPie,正如您所说,您需要按HTTPie documentation中所述提供密码。

您必须使用类似

的内容
http -a peter@cleanpixel.nl:some_password POST  http://localhost:3000/auth/sign_in