Current_user nil после создания сеанса в ROR с AuthLogic
У меня проблемы с AuthLogic и current_user.
У меня есть приложение Flex4, использующее инфраструктуру Cairngorm в качестве внешнего интерфейса и Ruby On Rails в качестве внутреннего.
Я могу войти в систему через браузер, и только при использовании ROR. Тем не менее, когда я пробую его через приложение Flex4, оно не получится в первый раз, но сработает во второй раз.
То, что происходит, находится внутри user_sessions_controller.rb У меня есть вызов
self.current_user.to_xml;
При первом вызове действия create объект current_user возвращает nil. Во второй раз, когда я это называю (без перезапуска сервера или браузера), это будет соответствующий текущий пользователь.
Так что это заставляет меня поверить, что current_user устанавливается через некоторое время после команды render внутри моего действия create.
Если мне нужно, чтобы мой контроллер rails возвращал текущего пользователя в действии создания, как бы я это сделал?
2 ответа
Просто была та же проблема... не уверен, почему это происходит, но я пытался вызвать current_user в моем методе создания в моем user_sessions_controller.rb
, решено согласно ниже...
def create
@user_session = UserSession.new(params[:user_session])
if @user_session.save
current_user = UserSession.find.user
current_user.increment_login_count_for_current_memberships!
flash[:notice] = 'Sign in successful.'
redirect_to root_path
else
render action: "new"
end
end
Надеюсь это поможет!
Это связано с тем, что вспомогательные методы current_user обычно определяются как before_action. Что означает, что действие before не было выполнено перед использованием во время создания сеанса.
Я также использовал этот UserSession.find.user, который отлично подходит для этого варианта использования.
Ура, Никлас