使用cURL设计身份验证

时间:2015-03-03 20:18:45

标签: ruby-on-rails api curl devise

如何使用Devise从终端使用cURL验证我的Ruby on Rails应用程序?

我正在尝试:

curl --user email:password http://domain.bla/api/auth/sign_in

正在回应:

  

您要查找的页面不存在。

2 个答案:

答案 0 :(得分:6)

这对我有用:

curl -XPOST -v -H 'Content-Type: application/json' http://domain/api/v1/auth/sign_in -d '{"email": "email@domain.com", "password": "password" }

所以我得到了回复(如下所示,只是重要部分):

< access-token: lW1c60hYkRwAinzUqgLfsQ
< token-type: Bearer
< client: W_xCQuggzNOVeCnNZbjKFw
< expiry: 1426610121
< uid: email@domain.com

然后我可以使用先前从上述请求获得的客户端和令牌验证令牌,我这样做:

curl -XGET -v -H 'Content-Type: application/json' -H 'access-token: lW1c60hYkRwAinzUqgLfsQ' -H 'client: W_xCQuggzNOVeCnNZbjKFw' -H "uid: email@domain.com" http://domain/api/v1/auth/validate_token

结果:

{"success":true,"data":{"id":3,"provider":"email","uid":"email@domain.com","firstname":null,"lastname":null,"email":"email@domain.com"}}

答案 1 :(得分:5)

我发现登录步骤需要包含在user词典中,即:

curl -X POST -v -H 'Content-Type: application/json' \ 
  http://somehost.com/users/sign_in -d \ 
  '{"user" : {"email": "some_user@nowhereville.org", "password": "OpenSecret" }}'

这是Devise 3.5.4。