【发布时间】:2020-11-14 18:10:16
【问题描述】:
我已经在这里找到了同样的问题:How can I get current_user in Devise SessionsController#destroy,但这不起作用,因为我没有 50+ 的声誉,我不能要求回答这个问题的人
Ruby 版本:'2.6.5',Rails 版本:'6.0.3.2'
这是会话控制器:
# frozen_string_literal: true
include Devise::Controllers::Helpers
class Users::SessionsController < Devise::SessionsController
# skip_before_action :authenticate_user!
# before_action :configure_sign_in_params, only: [:create]
before_action :get_current_user, only: [:destroy]
# GET /resource/sign_in
# def new
# super
# end
# POST /resource/sign_in
def create
self.resource = warden.authenticate!(auth_options)
set_flash_message!(:notice, :signed_in)
sign_in(resource_name, resource)
if !session[:return_to].blank?
render json: { logged: false }
else
render json: { logged: true, user: current_user }
end
end
# DELETE /resource/sign_out
def destroy
p "xxxxxxxxxxxxxxxxxxx"
p current_user # Nil
puts current_user # returns empty
p "xxxxxxxxxxxxxxxxxxx"
# super
end
protected
def get_current_user
p current_user # nil
end
# If you have extra params to permit, append them to the sanitizer.
# def configure_sign_in_params
# devise_parameter_sanitizer.permit(:sign_in, keys: [:attribute])
# end
end
路线文件:
Rails.application.routes.draw do
get 'show/users', to: 'development#index'
get 'show/:id', to: 'development#show'
delete 'delete/:id', to: 'development#destroy'
get 'login', to: 'login#index'
get 'sign_up', to: 'register#index'
devise_for :users, controllers: {
registrations: 'users/registrations',
sessions: 'users/sessions'
}
root 'home#index'
end
我的要求:
axios
.delete("http://localhost:8081/users/sign_out")
.then((resource) => {
console.log(resource);
// window.location = "/";
})
.catch((error) => {
console.log(error);
});
我希望 current_user 能够注销已登录的用户
【问题讨论】:
-
为什么你在destroy中评论了
super方法,它会注销用户 -
我发表评论是因为当我提出请求 imgur.com/04dCLGB.png 时会发生这种情况,我正在尝试不同的方法
标签: ruby-on-rails ruby session devise