Rails Session mit Browser inspizieren

There was a time, when I shared a blog. This post was written by Stephan. See all blogpost from him or stalk him on github.


In der Standardkonfiguration speichert Rails 3.2.3 die Session in einem Cookie Based Session Store im Browser des Benutzers ab. Ich wollte nun einfach mal zeigen, wie man die dort gespeicherten Sessiondaten am einfachsten auslesen und anschauen kann. Der Browser der Wahl ist bei mir Firefox.

Zuerst müsst ihr euch die folgenden beiden Firefox-Addons herunterladen und installieren:

  1. Firebug
  2. Firecookie

Nach der Installation der beiden Addons (Neustart Firefox) öffnet ihr eure Rails-Anwendung und kopiert euch die Sessiondaten (den markierten String) mit Hilfe von Firecookie in eure Ablage.

Sessiondaten einer Rails-Anwendung

Den String kopiert ihr als Variable encoded_session in unten stehenden Rubyskript und führt das Programm in der Konsole aus.

require "rails"
encoded_session= "BAh7B0kiD3Nlc3Npb25faWQGOgZFRkkiJTQ2ZWM3MzM2YzhiY2UyYjVkMzgxMzA3ZmY2YjQ2NTA3BjsAVEkiEF9jc3JmX3Rva2VuBjsARkkiMXJOZWorUGtSSnhSejI1dGE2VU12QWxxSDk4d2x3VWZKM3ExQjhFdEhheEU9BjsARg%3D%3D"

plain = Base64.decode64(encoded_session)
p Marshal.load(plain)

Ihr solltet nun den Inhalt eurer Session sehen.

test@test:~/scripts$ ruby session.rb
{"session_id"=>"46ec7336c8bce2b5d381307ff6b46507", "_csrf_token"=>"rNej+PkRJxRz25ta6UMvAlqH98wlwUfJ3q1B8EtHaxE="}

Info:

Der Skript benötigt ein require 'rails', da in der Session u.a. einige rails-spezifische Objekte abgespeichert sind.

Bei anderen Sessiondaten sollte unter Ruby 1.9.x ein require 'base64' genügen.

Danke