VPSサーバーでWebサイト公開 備忘録 ~Linux、MySQLからAJAXまで

curbでRailsアプリのクッキー、セッションIDを取得し、ログイン

curbでクッキーを有効にしてRailsが自動で生成するセッション情報を取得し、Railsアプリにログインするサンプルを作成してみました。

※目次をクリックすると目次の下部にコンテンツが表示されます。

Railsアプリのクッキー、セッションIDを取得
セッションIDはクッキー内に保持されているので、curbでクッキー情報を取得し、クッキー内にセッションIDが保持されているか確認してみました。
 
①curbスクリプト作成
 
c = Curl::Easy.new
c.enable_cookies = true
c.cookiefile = "cookie.txt"
c.cookiejar = "cookie.txt"
c.url = "http://localhost:3000/static_pages/home"
c.http_get

 
②スクリプト実行
 
③取得したクッキー情報確認
 
cookie.txtファイル内にセッションIDが下記のように記述されていました。
 
_blog_session WVgwcGYv・・・
 
“blog”がRailsアプリの名前です。
WVgwcGYv・・・の部分がセッションIDと思われます。

Railsアプリへログインするサンプル
require 'curb'
c = Curl::Easy.new
c.url = "http://localhost:3000/signin"
c.enable_cookies = true
c.cookiefile = "cookie.txt"
c.cookiejar = "cookie.txt"
c.http_get
web_page = c.body_str
token = web_page.scan(/authenticity_token\" type=\"hidden\" value=\"(.*)\"/)

c = Curl::Easy.http_post("http://localhost:3000/sessions",
  Curl::PostField.content('authenticity_token', token[0].first),
  Curl::PostField.content('session[owner_num]', '999'),
  Curl::PostField.content('session[password]', "xxxxx"),
  Curl::PostField.content('commit', 'ログイン')) do |curl| 
  curl.enable_cookies = true
  curl.cookiefile = "cookie.txt"
  curl.cookiejar = "cookie.txt"
  curl.verbose = true
end
puts c.body_str.size

上記のようにクッキーを有効にしてセッション情報が保持されたクッキー情報を送ることによってログインできます。

モバイルバージョンを終了