2011-12-14 2 views
0

Возможно ли показать сообщение «Уже зарегистрировано», если этот пользователь зарегистрирован на одном из компьютеров. Эта вещь возможно используя базу данных. Но у меня были сеансы для входа в систему и выхода из системы, я думаю, что невозможно, чтобы сеансы показывали «Уже зашел».Сессии в Ruby On Rails

Пожалуйста, предложите лучший способ для этого.

ответ

0

Если они идут на другой компьютер? Если вы используете сеанс [: something] - он хранится в браузере. Для того, что нужно хранить в другом браузере, вы должны использовать базу данных для состояния.

0

Я думаю, что это возможно, но это, как говорится, мне не нравится. Я полагаю, это вас беспокоит, потому что вы не можете легко идентифицировать пользователя из данных сеанса?

Убедитесь, что модель пользователя обновляется каждый раз, когда пользователь обращается к приложению с использованием параметра before_filter в контроллере приложения.

В процессе входа в систему вы можете запросить пользователей, зарегистрированных в системе, указав ограничение по времени, равное предельному сроку очистки сеанса.

Вы можете сделать что-то вроде этого:

User.where("email = ? and updated_at >= ?",login_email,20.minutes.ago) 
0

Если вы хотите, чтобы избежать одновременных логинов для одного пользователя. Лучшая реализация может быть достигнута путем добавления столбца в таблицу users, которая хранит IP-адрес зарегистрированного пользователя.

В противном случае вы можете изменить механизм сессии магазин, чтобы использовать любой из:

  • ActiveRecordStore
  • FILESTORE
  • DRbStore
  • MemoryStore

в дополнение к значениям по умолчанию CookieStore ,

0

По моему честному мнению, самый простой способ добиться того, что вам нужно, - это хранить все сеансы в базе данных. Впоследствии вы можете просто проверить до входа в систему, если кто-то уже хранится в DB Rails sessions current practices (первый ответ)