Я пытаюсь прочитать данные сеанса пользователя из моего сеанса Redis в Rails 5.1.
- Пользователь входит в систему
- Magento Credis настроен на использование Zlib для сжатия данных сеанса (строки JSON).
- Magento сохраняет сжатые данные сеанса в Redis
Использование redis-rb
gem:
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
.
Это известный формат? Если да, то какой это формат?
Есть ли библиотека, которую я могу использовать для разбора этой строки?
Заранее спасибо!