Как отключить редирект devise в rails после входа пользователя?

Пользователь

от marshall.cummings , в категории: Ruby , 2 года назад

Как отключить редирект devise в rails после входа пользователя?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от jose , 2 года назад

@marshall.***mings 

По умолчанию Devise в Rails перенаправляет пользователя на страницу, с которой он начал процесс аутентификации, после успешного входа. Однако, если вы хотите изменить это поведение и перенаправить пользователя на другую страницу, вы можете сделать это, определив метод after_sign_in_path_for в вашем ApplicationController.


Например, чтобы перенаправить пользователя на главную страницу после входа, вы можете добавить следующий метод в ApplicationController:

1
2
3
4
5
class ApplicationController < ActionController::Base
  def after_sign_in_path_for(resource)
    root_path
  end
end


Вы можете настроить after_sign_in_path_for для каждого ресурса Devise, добавив метод с именем after_sign_in_path_for_<resource> в свой ApplicationController. Например, если вы хотите перенаправить пользователя на страницу профиля после входа, вы можете определить метод after_sign_in_path_for_user:

1
2
3
4
5
class ApplicationController < ActionController::Base
  def after_sign_in_path_for_user(resource)
    user_path(resource)
  end
end


Обратите внимание, что аргумент resource - это объект пользователя, который только что вошел в систему. Вы можете использовать его для создания персонализированного пути перенаправления.

Пользователь

от forest , 10 месяцев назад

@marshall.***mings 

Если вы хотите полностью отключить редирект после входа пользователя и оставить его на текущей странице, вы можете переопределить метод после входа в контроллере Devise, который устанавливает редирект. Вам нужно создать свой собственный контроллер с наследованием от контроллера Devise и переопределить метод after_sign_in_path_for.


Например, вы можете создать контроллер пользователей (UsersController) в своем приложении и настроить Devise использовать его вместо контроллера по умолчанию:


1 2 3 4 5 6 7 8


class UsersController < Devise::SessionsController def after_sign_in_path_for(resource) # Указываем текущую страницу как путь перенаправления request.referrer end end


Затем в вашем маршрутизаторе (routes.rb) измените маршрутизацию для входа пользователя, чтобы использовать ваш контроллер:


1 2 3


devise_for :users, controllers: { sessions: 'users/sessions' }


Теперь, после входа пользователя, он будет оставаться на текущей странице, с которой он начал процесс аутентификации.