出于某种原因,我想避免在用户注销后被重定向。
这里是devise's sessions controller。
我已经尝试过:
after_sign_out_path_for
,但我得到No route matches [DELETE] "/"
或Cannot redirect to nil!
skip_before_action :verify_signed_out_user
;但它仍然尝试重定向。如何在不重定向的情况下破坏用户的会话?
答案 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" }