用户注销Devise时如何避免重定向?

时间:2018-10-30 10:43:48

标签: ruby-on-rails devise

出于某种原因,我想避免在用户注销后被重定向。

这里是devise's sessions controller

我已经尝试过:

  • 覆盖after_sign_out_path_for,但我得到No route matches [DELETE] "/"Cannot redirect to nil!
  • 在我的会话控制器中skip_before_action :verify_signed_out_user;但它仍然尝试重定向。

如何在不重定向的情况下破坏用户的会话?

1 个答案:

答案 0 :(得分:2)

您可以通过覆盖Devise::SessionsController#destroy方法来更改行为:

class MySessionsController < Devise::SessionsController
  def destroy
    signed_out = (Devise.sign_out_all_scopes ? sign_out : sign_out(resource_name))
    # the `now: true` option sets the flash for this request 
    set_flash_message! :notice, :signed_out, now: true if signed_out
    respond_to do |format|
      format.all { head :no_content }
      format.any(*navigational_formats) { render 'something' }
    end
  end
end

您还需要告诉路由器路由到您的自定义控制器:

# config/routes.rb
devise_for :users, controllers: { sessions: "my_sessions" }