1
0
Fork 0
mirror of https://github.com/sinatra/sinatra synced 2023-03-27 23:18:01 -04:00

Update session part in russian readme [skip ci]

This commit is contained in:
Anton Davydov 2016-08-11 11:50:46 +03:00
parent a7483f48b0
commit 4443f963b4

View file

@ -42,6 +42,7 @@
* [Фильтры](#Фильтры) * [Фильтры](#Фильтры)
* [Методы-помощники](#Методы-помощники) * [Методы-помощники](#Методы-помощники)
* [Использование сессий](#Использование-сессий) * [Использование сессий](#Использование-сессий)
* [Выбор вашей собственной "прослойки" сессии](#Выбор-вашей-собственной-прослойки-сессий)
* [Прерывание](#Прерывание) * [Прерывание](#Прерывание)
* [Передача](#Передача) * [Передача](#Передача)
* [Вызов другого маршрута](#Вызов-другого-маршрута) * [Вызов другого маршрута](#Вызов-другого-маршрута)
@ -1341,25 +1342,6 @@ get '/:value' do
end 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. Тем не менее, так как этот ключ ключом. Секретный ключ генерируется Sinatra. Тем не менее, так как этот ключ
будет меняться с каждым запуском приложения, вы, возможно, захотите установить будет меняться с каждым запуском приложения, вы, возможно, захотите установить
@ -1384,6 +1366,40 @@ foo.com, добавьте *.* перед доменом:
set :sessions, :domain => '.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
```
Смотрите секцию "Настройка защиты от атак" для более подробной информации.
### Прерывание ### Прерывание
Чтобы незамедлительно прервать обработку запроса внутри фильтра или маршрута, Чтобы незамедлительно прервать обработку запроса внутри фильтра или маршрута,