From 4443f963b4481d54ed25cb3c508121d91da5f012 Mon Sep 17 00:00:00 2001 From: Anton Davydov Date: Thu, 11 Aug 2016 11:50:46 +0300 Subject: [PATCH] Update session part in russian readme [skip ci] --- README.ru.md | 54 ++++++++++++++++++++++++++++++++++------------------ 1 file changed, 35 insertions(+), 19 deletions(-) diff --git a/README.ru.md b/README.ru.md index 453dadae..f9ab6766 100644 --- a/README.ru.md +++ b/README.ru.md @@ -42,6 +42,7 @@ * [Фильтры](#Фильтры) * [Методы-помощники](#Методы-помощники) * [Использование сессий](#Использование-сессий) + * [Выбор вашей собственной "прослойки" сессии](#Выбор-вашей-собственной-прослойки-сессий) * [Прерывание](#Прерывание) * [Передача](#Передача) * [Вызов другого маршрута](#Вызов-другого-маршрута) @@ -1341,25 +1342,6 @@ get '/:value' do end ``` -Заметьте, что при использовании `enable :sessions` все данные сохраняются в -куках (cookies). Это может быть не совсем то, что вы хотите (например, -сохранение больших объемов данных увеличит ваш трафик). В таком случае вы -можете использовать альтернативную Rack "прослойку" (middleware), реализующую -механизм сессий. Для этого *не надо* вызывать `enable :sessions`, вместо этого -следует подключить ее так же, как и любую другую "прослойку": - -```ruby -use Rack::Session::Pool, :expire_after => 2592000 - -get '/' do - "value = " << session['value'].inspect -end - -get '/:value' do - session['value'] = params['value'] -end -``` - Для повышения безопасности данные сессии в куках подписываются секретным ключом. Секретный ключ генерируется Sinatra. Тем не менее, так как этот ключ будет меняться с каждым запуском приложения, вы, возможно, захотите установить @@ -1384,6 +1366,40 @@ foo.com, добавьте *.* перед доменом: set :sessions, :domain => '.foo.com' ``` +#### Выбор вашей собственной "прослойки" сессии + +Заметьте, что при использовании `enable :sessions` все данные сохраняются в +куках (cookies). Это может быть не совсем то, что вы хотите (например, +сохранение больших объемов данных увеличит ваш трафик). В таком случае вы +можете использовать альтернативную Rack "прослойку" (middleware), реализующую +механизм сессий. Для этого используете один из способов ниже: + +```ruby +enable :sessions +set :session_store, Rack::Session::Pool +``` + +Или установите параметры сессии с помощью хеша опций: + +```ruby +set :sessions, :expire_after => 2592000 +set :session_store, Rack::Session::Pool +``` + +Вы так же можете не вызывать `enable :sessions`, а вместо этого вызывать +необходимую вам прослойку так же, как вы это обычно делаете. Очень важно +обратить внимание на то, что когда вы используете этот метод, основной способ +защиты сессии **не будет включен по умолчанию**. Если вы хотите включить защиту, +вам нужно добавить следующие строчки: + +```ruby +use Rack::Session::Pool, :expire_after => 2592000 +use Rack::Protection::RemoteToken +use Rack::Protection::SessionHijacking +``` + +Смотрите секцию "Настройка защиты от атак" для более подробной информации. + ### Прерывание Чтобы незамедлительно прервать обработку запроса внутри фильтра или маршрута,