使用curl登录并使用设计在rails中发布

时间:2012-12-08 10:21:49

标签: ruby-on-rails authentication curl devise

我正在尝试使用curl创建一个bash脚本,以登录使用设备上的设计和发布的rails应用程序。

到目前为止,我可以这样做:

#!/bin/bash

curl \
  --verbose \
  --request GET \
  -c cookie \
  http://localhost:3000/login > tmpsession

# the ff is a hack to get the authenticity_token from the form
# and join it with the file 'data' for posting with curl
csrf_token=`cat tmpsession|grep 'authenticity_token'|grep -o 'authenticity_token.*' |grep -o 'value=.*' |cut -d ' ' -f1|cut -d \" -f2`
echo "authenticity_token=" > data ; echo $csrf_token >> data; echo "&" >> data; cat samplepost >> data 

curl \
  --verbose \
  -b cookie \
  --request POST \
  --data "user[username=admin&user[password]=xxpasswordxx&authenticity_token=$csrf_token" \
  http://localhost:3000/login 

此时,我被重定向到admin / index页面,在那里它传递redirect_if_not_admin before_filter

然而,当我尝试这样做时:

curl \
  --verbose \
  -b cookie \
  --request POST \
  --data @data
  http://localhost:3000/admin/posts

我在日志中收到Filter chain halted as :redirect_if_not_admin rendered or redirected,告诉我当前没有用户登录。

我在想curl将会话存储在cookie中,并将其传递给服务器。有没有办法用卷曲来保持这样的会话?

0 个答案:

没有答案