Это достигается использованием a "session": совокупность данных, специфичных для данного клиента, доступных на стороне сервера.
Есть plenty of ways для сервера для хранения сессии, как правило, Rails использует cookie: небольшие (обычно около 4 кБ) набор данных, который хранится в браузере пользователя и отправленного с каждым запросом. По этой причине вы не хотите слишком много хранить там. Однако вам, как правило, не нужно многого, вам нужно всего лишь достаточно, чтобы идентифицировать пользователя и все еще затруднять выдачу себя за него.
Из-за этого Rails хранит сеанс сам в файле cookie (как говорит this guide). Это просто и не требует установки. Некоторые считают, что хранилище файлов cookie ненадежно и вместо этого используют механизмы персистентности: базы данных, хранилища ключей и т. П.
Обычно рабочий процесс выглядит следующим образом:
- идентификатор сеанса хранится в куки, когда сервер решает инициализировать сеанс
- Сервер принимает запрос от пользователя, извлекает сеанс его идентификатор
- Если сеанс говорит, что она представляет пользователю X, Rails действует как если бы это на самом деле ему
поскольку различные пользователи отправляют различные идентификаторы сессии, Rails обрабатывает их как отличаются и выводит данные, относящиеся к обнаруженному: по запросу.
Перед тем, как задать: да, можно украсть идентификатор сессии и акт другого человека во имя этого человека.Он называется session hijacking, и это только одна из всех возможных проблем безопасности, с которыми вы можете столкнуться, если не будете осторожны. На этой же странице вы найдете более подробную информацию о том, как предотвратить страдание ваших пользователей.
Балансиры нагрузки могут распределять задания на несколько серверов, которые могут работать одновременно. – sawa
Я знаю. Извините, я не понимаю вашу точку зрения. –
Вы писали, что запросы не могут одновременно обрабатываться серверами. Это не правильно. Это база данных, которая контролирует это. – sawa