Рекомендации по внедрению системы для обработки истечения срока действия аутентификации пользователя с использованием Ruby on Rails - PullRequest
1 голос
/ 01 февраля 2011

Я использую Ruby on Rails 3 и хотел бы обработать пользовательские аутентификации, срок действия которых истекает через 15 минут бездействия. Я прочитал « Руководство по безопасности Ruby On Rails », в котором по соображениям безопасности рекомендуется не сохранять аутентификацию в сеансе, поскольку ее значения могут быть изменены на стороне клиента. Поэтому я решил создать модель только для этого.

Для базы данных я создал таблицу со следующими столбцами: «last_sign_in», «last_sign_out» и отметки времени «creation_at» и «updated_at». У каждого пользователя есть отдельная строка для хранения его / ее аутентификационной информации.

Мои вопросы / сомнения:

  1. Что касается производительности системы, рекомендуется ли этот подход, когда в базе данных будет много (тысячи и тысячи) пользователей? Если нет, каков наилучший подход к обработке истечения срока действия аутентификации?

  2. В моем случае , как реализовать код, заботящийся о производительности? То есть, как обрабатывать истечение срока действия аутентификации, как можно меньше взаимодействуя с базой данных и запросами кэширования?

  3. Добавление столбца «last_action» в таблицу базы данных, чтобы получить информацию о времени последнего действия, выполненного пользователями, сколько стоит?

1 Ответ

0 голосов
/ 20 июля 2011

Вы можете использовать devise gem для аутентификации с модулем с именем Rememberable , который хранит и загружает файлы cookie для вас.

Rememberable управляет генерацией и очисткой токена для запоминания пользователя. из сохраненного куки. Запоминаемый также имеет полезные методы для борьбы с сериализацией пользователя в cookie и обратно из cookie, пытаясь искать запись на основе сохраненной информации. Вы, вероятно, не будете использовать запоминаемые методы напрямую, они используются в основном для обработки токена запоминания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...