gpt4 book ai didi

ruby-on-rails - 过滤器链停止为 :verify_signed_out_user rendered or redirected error when making a delete fetch in Rails Devise

转载 作者:行者123 更新时间:2023-12-03 20:51:23 24 4
gpt4 key购买 nike

我使用 react 作为我的前端,并使用 rails/devise 作为我的后端/身份验证。登录和注册新用户可以正常工作,但是当我尝试使用由设计创建的/users/sign_out 路由注销时(如 wiki 所述),我收到错误消息:

Filter chain halted as :verify_signed_out_user rendered or redirected
我的 fetch 调用如下:
const logout = (event) => {
event.preventDefault();
fetch('http://localhost:3000/users/sign_out',{
method: 'DELETE',
headers: {
'Content-type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
user: JSON.parse(localStorage.getItem('user'))
})
})
.then(res => res.json())
.then(resp => console.log(resp))
}
我也对我的应用程序 Controller 进行了以下更改。不完全确定这是否可能是问题的一部分:
class ApplicationController < ActionController::API
include ActionController::MimeResponds
respond_to :json, :html

before_action :configure_permitted_parameters, if: :devise_controller?
before_action :authenticate_user!

protected

def configure_permitted_parameters
devise_parameter_sanitizer.permit(:login, keys: [:username, :email, :password])
devise_parameter_sanitizer.permit(:sign_up, keys: [:username, :email, :password])
devise_parameter_sanitizer.permit(:account_update, keys: [:username])
end

end
我试过使用
skip_before_action :verify_signed_out_user 
在我的应用程序 Controller 中,但它引发了该方法未定义的错误。
ArgumentError (Before process_action callback :verify_signed_out_user has not been defined):
任何和所有的帮助表示赞赏。谢谢!

最佳答案

我认为问题在于您没有在请求中发送用户身份验证 token header 。您只是将用户作为正文参数发送。通常在逻辑中我们将 Header 设置为 Authorization: Bearer xyz对用户进行身份验证。
当您希望用户退出时,您必须发送 Auth token ,以便设计可以识别用户并将用户退出。
因此,当设计尝试运行 verify_signed_out_user -> 由于用户未登录(在您的情况下没有身份验证 token ),因此会出现此问题。
verify_signed_out_user不是像 authenticate_user! 这样的全局方法,所以你不能调用before_action :verify_signed_out_user就像我们通常所说的 before_action :authenticate_user!对用户进行身份验证。

关于ruby-on-rails - 过滤器链停止为 :verify_signed_out_user rendered or redirected error when making a delete fetch in Rails Devise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62604173/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com