Я изучаю структуру Sinatra &, разрабатывая систему входа в систему. Я наткнулся на два способа использования файлов cookie.Разница в содержании файлов cookie с использованием сеанса Sinatra и стойки :: Session :: EncryptedCookie
Простой Синатра встроенный способ:
enable :sessions
set :session_secret, 'random-key'
Этот подход дает следующее содержание печенья при входе в систему (используется session.inspect
, чтобы получить выход):
{"session_id"=>"6be0b9a31831604ba51114d265ba952482e0b2da6ced6c54e15ebe7f212858ca",
"tracking"=>{"HTTP_USER_AGENT"=>"b8c1e8f89eeaea0b825bed0d811f0c7678e98c74",
"HTTP_ACCEPT_ENCODING"=>"a0bfc876d68fe7aea700da5ea8925abac6f2f794",
"HTTP_ACCEPT_LANGUAGE"=>"dd065ed263c67d799f943ab6c39b55c5e008cbb5"},
"csrf"=>"b480324f510e4f391d15cee8236a8fb74a5aaa5ce2f9ad38e4dbb025a823b16e",
"name"=>"john"}
Другой подход использует зашифрованный куки:
require 'sinatra'
require 'encrypted_cookie'
use Rack::Session::EncryptedCookie, :secret => "random-key"
Но этот подход создает следующие файлы cookie con Палатка при входе в систему (используется session.inspect
здесь):
{:name=>"john"}
Почему enable :sessions
создает такое большое печенье со всей этой информацией & почему требуется это (особенно те HTTP _... части?) Поскольку Rack::Session::EncryptedCookie
не генерируя любое из них.
Считаете ли вы, что использование enable :sessions
должно быть предпочтительным, поскольку оно имеет токен csrf & session id? Или вы считаете, что Rack::Session::EncryptedCookie
достаточно, поскольку он зашифрован?
я следующие версии драгоценных камней установлены:
encrypted_cookie (0.0.4)
rack (1.5.2)
rack_csrf (2.4.0)
sinatra (1.4.3)
thin (1.5.1)
Пожалуйста, скажите мне, если вам нужна дополнительная информация ...
Yea. Я знаю это :). Но мой вопрос: предпочитаете ли вы включать: сеансы, потому что он создает идентификатор сессии id & csrf и все эти дополнительные данные? или вы предпочитаете «Rack :: Session :: EncryptedCookie», потому что его зашифрованные и не нужны эти дополнения? – Rahul
Вы используете любое другое промежуточное ПО? Выполнение 'enable: sessions', а затем проверка сеанса дает мне результат, аналогичный выводу« Rack :: Session :: EncryptedCookie ». Лично я использую «Rack :: Session :: Cookie» в качестве промежуточного программного обеспечения и задаю секрет этого (загруженный из переменной среды). –
Хммм. При использовании подхода 'enable: sessions' я не использую никакого другого промежуточного программного обеспечения. BTW, я отредактировал вопрос, чтобы включить версии необходимых драгоценных камней. У меня может быть другая версия какого-то драгоценного камня по сравнению с вами. Любые подсказки? – Rahul