Ответ 1
current_user
является свойством контроллера, поэтому после app.post('/sign_in', ...
вы можете вызвать app.controller.current_user
в консоли rails, чтобы получить объект User
Я занимаюсь разработкой/отладкой в IRB и должен войти в систему пользователя, а затем смогу использовать current_user в своих усилиях.
От Brian Deterling ответьте на другой вопрос, я смог успешно войти в систему и получить доступ к ответу страницы с помощью этой последовательности:
>> ApplicationController.allow_forgery_protection = false
>> app.post('/sign_in', {"user"=>{"login"=>"some-login-id", "password"=>"some-password"}})
>> app.get '/some_other_path_that_only_works_if_logged_in'
>> pp app.response.body
ПРИМЕЧАНИЕ. Если вы получите ответ 200, вы не вошли в систему. Вам необходимо перенаправить 302, чтобы указать успешный вход в систему. См. Ответ Тима Сантефорда.
Мне удалось получить информацию о сеансе:
1.9.3-p125 :009 > app.session
=> {"_csrf_token"=>"1yAn0jI4VWzUH84PNTH0lVhjpY98e9echQGS4=", "session_id"=>"89984667d30d0fec71f2a5cbb9017e24"}
Я пробовал все, что мог придумать, чтобы попытаться добраться до current_user
через app
и app.session
, но не повезло. Как я могу получить current_user
?
current_user
является свойством контроллера, поэтому после app.post('/sign_in', ...
вы можете вызвать app.controller.current_user
в консоли rails, чтобы получить объект User
Я пробовал ваш метод app.post входа в приложение, в котором я работаю, и использует Devise. После отправки на страницу входа в систему и получения перенаправления 302 app.session
отобразился идентификатор наблюдателя.
>> app.session
{
"_csrf_token"=>"dT0/BqgLb84bnE+f1g...",
"warden.user.user.key"=>["User", [42843], "$2a$10$1OU.1BixIba..."],
"session_id"=>"0dd49c05ff4e6362c207c6eb877f86cd"
}
Мне удалось найти пользователя следующим образом:
>> current_user = User.find(app.session["warden.user.user.key"][1][0])
Когда я вышел из системы, а затем попробовал войти в систему с неправильным паролем, я получаю 200, а затем в app.session отсутствует информация пользователя warden и содержит только токен csrf и идентификатор сеанса, как ваш пример.
BTW: после входа в систему app.controller.current_user
было равно нулю, даже когда идентификатор наблюдателя находился в сеансе.