默认设计::会话控制器"删除/用户/sign_out"不注销用户



我有一个带有登录链接的应用程序: <%= link_to('Logout', destroy_user_session_path, method: :delete) %>

单击链接后,我在DEV服务器日志中获得以下内容:

Started DELETE "/users/sign_out" for 172.30.0.1 at 2019-03-06 14:52:49 +1300
Processing by Users::SessionsController#destroy as HTML
  Parameters: {"authenticity_token"=>"JLLEb2GSjGuYx+oBhsAkB0jcP0qZCJEUBvuH5VDmCS9Xbwe/hw085gumBPqJmWTtjyFeW1Io81n32NGxDuKjyQ=="}
  User Load (0.3ms)  SELECT  `users`.* FROM `users` WHERE `users`.`id` = 4 ORDER BY `users`.`id` ASC LIMIT 1
   (0.2ms)  BEGIN
   (0.4ms)  COMMIT
Redirected to https://webdev.test:3000/
Completed 302 Found in 28ms (ActiveRecord: 0.9ms) 

然后重新加载根页,但是用户尚未签署。

我以Chrome的隐身模式打开了一个选项卡,并尝试登录和登录,并且效果很好,因此它似乎是我普通模式浏览器的特定内容。我尝试重新启动浏览器,但没有区别。

我登录的用户帐户每次我都不会增加其登录计数,也不会更新时间戳更改。

然后,我将byebug放入我的根页控制器方法中,然后运行以下内容:
   1: class HomeController < ApplicationController
   2:   def index
   3:     byebug
=> 4:     # Omitted for brevity, nothing which touches the current_user object
   5:   end
   6: end
(byebug) Devise.sign_out_all_scopes
true
(byebug) sign_out
   (0.8ms)  BEGIN
   (0.4ms)  COMMIT
true
(byebug) continue

并在此之后确认,仍未签署用户。

重新启动Rails应用程序并再次尝试所有的结果,导致了相同的结果,我仍然无法签署该用户。

以前有人看过这件事,并且对被卡住的东西以及如何签约有任何想法?

编辑

根据评论者的要求,与sign_out有关的路由:

$ rails routes | grep sign_out
          destroy_user_session DELETE   /users/sign_out(.:format)                                   users/sessions#destroy
$ 

rails routes | grep destroy_user_session的输出也与上述相同,因此它表明没有一个命名的路由将请求引向其他控制器操作。

app/controllers/users/sessions_controller.rb的控制器(仅覆盖创建方法,而不是销毁方法)

class Users::SessionsController < Devise::SessionsController
  def create
    # Omitted for brevity
  end
end

我尝试并创建了用户控制器来检查,并且似乎一切都很好。我只有一个奇怪的问题,我不确定为什么它会更改。它是关于SQL查询的。您的响应正在遵循查询。

SELECT  `users`.* FROM `users` WHERE `users`.`id` = 4 ORDER BY `users`.`id` ASC LIMIT 1

如何使用4个ID作为硬编码,通常应该准备好陈述,如

SELECT  "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT ?  [["id", 4], ["LIMIT", 1]]

因此,要调查我将尝试使用不同的用户查看登录和注销,并检查ID是否在更改。如果它没有更改,那么我将调查此ID的来源以及为什么要硬编码。

更改为按钮而不是链接为我解决此问题<%= button_to 'Exit', destroy_user_session_path, method: :delete %>

相关内容

最新更新