2

curl を使用して bash スクリプトを作成し、devise を使用してフォームに投稿する 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 

この時点で、redirect_if_not_adminbefore_filterを渡す admin/index ページにリダイレクトされます。

ただし、これを実行しようとすると:

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 に保存し、これがサーバーに渡されると考えていました。このようなセッションを curl で永続化する方法はありますか?

4

0 に答える 0