Как я могу найти пользователя с помощью идентификатора сеанса?
Учитывая session["session_id"]
можно ли найти зарегистрированный в User
, к которому принадлежит этот сеанс?
Ответы
Ответ 1
По крайней мере, на моей системе (рельсы 3.2, разработка 2.0.4) вы можете сделать это следующим образом:
session
:
{"session_id"=>"be02f27d504672bab3408a0ccf5c1db5", "_csrf_token"=>"DKaCNX3/DMloaCHbVSNq33NJjYIg51X0z/p2T1VRzfY=", "warden.user.user.key"=>["User", [3], "$2a$10$5HFWNuz5p6fT3Z4ZvJfQq."]}
session["warden.user.user.key"][1][0]
, то 3
.
Итак, я бы нашел его как:
User.find(session["warden.user.user.key"][1][0])
Ответ 2
Я не уверен, что вы пытаетесь выполнить, но попытаетесь ответить
Если вы хотите использовать только пользователя из текущего сеанса, простым способом было бы сохранить его идентификатор в сеансе, например:
def login(username, pass)
# do the usual authentication stuff and get user
if logedin
session[:user_id] = user.id
end
end
Тогда получить текущего пользователя будет что-то вроде
current_user =User.find(session[:user_id])
Если вы хотите найти всех пользователей, которые в настоящее время вошли в систему, я думаю, вам нужно настроить приложение для сохранения сеанса в БД, поскольку предопределено, что данные сеанса хранятся в файлах cookie в браузере. Для получения дополнительной информации об этом проверьте этот ответ
Как отслеживать онлайн-пользователей в Rails?
РЕДАКТИРОВАТЬ: Просто заметили, что вы используете программу, поэтому первый способ на самом деле для вас. Вам просто нужно вызвать метод current_user
на любом контроллере.
Для второго варианта проверьте этот ответ "Кто в сети" используя Devise in Rails