2013-02-11 2 views
0

Как определить Devise after_sign_in_path для перенаправления на пользователя страницы, прежде чем нажать, чтобы войти в систему? Я пытался с этим в application_controller:Devise after_sign_in_path с контроллером пользовательских сессий

13 def after_sign_in_path_for(resource_or_scope) 
14  sign_in_url = url_for(:action => 'new', :controller => 'my_sessions', :only_path => false, :protocol => 'http') 
15  if request.referer == sign_in_url 
16  super 
17  else 
18  stored_location_for(resource_or_scope) || request.referer || root_path 
19  end 
20 end 

С этим я только попадаю в root_path. Стоит отметить, что у меня есть пользовательский контроллер для сеансов callse MySessionsController. Что я делаю не так?

+0

Можете ли вы указать, какая ветка оператора 'if' выполняется? – rossta

ответ

2

Вам не нужно касаться after_sign_in_path_for(resource_or_scope), так как это поведение по умолчанию.

Обратный путь хранится в session["user_return_to"] (если пользователь ваша Разрабатывают сфера), и устанавливается store_location! in FailureApp

это приложение отказ вызывается каждый аутентификации надзиратель время терпит неудачу: см warden config вызова Delegator.

Возможно ли, что вы как-то обошли это?

Это происходит, если вы прошли проверку подлинности без взрыва. Уорден только поручительств через приложение ошибки, если вы звоните warden.authenticate! см warden wiki, который случается if you call devise's authenticate_user!

убедитесь, что вы используете в качестве after_sign_in_path_for перенаправлять местоположение в контроллере like here сеанса в случае, если у вас есть пользовательский.

+0

может быть, что я обойду его из-за моего пользовательского контроллера my_sessions? – oFca

+0

Я обновил свой ответ –

+1

У вас был какой-то успех? –

Смежные вопросы