2009-03-08 5 views
5

В моем приложении Rails у меня есть страница входа. После того, как этот пользователь войдет в систему, что лучше всего подходит для моего приложения, чтобы продолжить отслеживание человека, который вошел в систему. Например, если пользователь переместится на разные страницы, мои контроллеры/действия потеряют отслеживание этого пользователя, если я не продолжу передачу переменная между каждой страницей, которую пользователь посещает. Есть ли лучший способ сделать это? Должен ли я использовать переменную sessions?Rails: отслеживание идентификатора пользователя

ответ

7

Да, сеансы - это именно то, что вы ищете.

session["user_id"] = user_id 

И для извлечения текущего пользователя на другую страницу (если ваша модель называется User):

@current_user = User.find(session["user_id]") 
+0

Имейте в виду, что если вы используете куки основе сессий, которые по умолчанию я думаю, что в rails 2.1+, чтобы эти данные можно было изменить, чтобы переключиться, кто вошел в систему. – Tilendor

+2

Фактически, файл cookie имеет отпечаток SHA512, основанный на вас r секретный ключ приложения, не искажая данные. Это означает, однако, что содержимое cookie доступно на стороне клиента, поэтому вам следует избегать хранения конфиденциальных данных (паролей и т. Д.), Если вы не перейдете в хранилище на стороне сервера. – Palm

4

Сильно рассмотреть плагин для управления этим.

Существует несколько таких, как restful authentication.

Это дает current_user и logged_in? функциональность.