我正在尝试从Rails 5.1中的Magento 1.9.3.7 Redis会话读取用户会话数据。
使用redis-rb
宝石:
redis = Redis.new(
host: ENV['MAGENTO_REDIS_SESSION_HOST'],
password: ENV['MAGENTO_REDIS_SESSION_PASS'],
port: ENV['MAGENTO_REDIS_SESSION_PORT'],
db: ENV['MAGENTO_REDIS_SESSION_DB']
)
data = redis.hget("sess_123456", "data")
data = data.[4..data.length]
# => data
# :gz:x\u0001\xEDWM\x8F\xDB6\u0010\...
json_string = Zlib::Inflate.inflate(data)
# => json_string
# "_secure_cookie_check|s:32:\"4d1234ebebc1234fcf1234fc1234d6da\";core|a:5:{s:23:\"_session_validator_data\";...
请注意
中的|s:<some_number>
和a:<some_number>
我知道s:32
是字符串4d1234ebebc1234fcf1234fc1234d6da
的长度。
这是已知格式吗?如果是,是什么格式?
有没有我可以用来解析此字符串的库?
谢谢!
答案 0 :(得分:1)
结果是,该格式是序列化的PHP Session。
使用会话数据,通常会用PHP调用session_decode
万一有人想在Rails中反序列化PHP会话,这是我发现的两个瑰宝: