gpt4 book ai didi

ruby-on-rails - Rails 中的真实性 token 无效

转载 作者:行者123 更新时间:2023-12-03 16:21:09 25 4
gpt4 key购买 nike

尝试使用 Devise 登录用户时,我收到无效的真实性 token 错误。

我有 csrf_meta_tags在我的布局中,有一个 authenticity_token存在于请求参数中。正如其他问题的答案所建议的那样,protect_from_forgery with: :exception之前 before_action :authenticate_user! .

如果我注释掉 protect_from_forgery ,我在我的服务器日志中看到以下内容:

Started POST "/users/sign_in" for 127.0.0.1 at 2018-01-19 16:13:46 -0500
Processing by Devise::SessionsController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"[TOKEN]", "user"=>{"badge_number"=>"0285", "password"=>"[FILTERED]"}, "commit"=>"Log in"}
User Load (0.3ms) SELECT `users`.* FROM `users` WHERE `users`.`badge_number` = '0285' ORDER BY `users`.`id` ASC LIMIT 1
(0.2ms) SELECT `divisions`.`id` FROM `divisions` INNER JOIN `divisions_users` ON `divisions`.`id` = `divisions_users`.`division_id` WHERE `divisions_users`.`user_id` = 2
CACHE (0.0ms) SELECT `divisions`.`id` FROM `divisions` INNER JOIN `divisions_users` ON `divisions`.`id` = `divisions_users`.`division_id` WHERE `divisions_users`.`user_id` = 2 [["user_id", 2]]
Redirected to http://localhost:3000/
Completed 302 Found in 141ms (ActiveRecord: 2.1ms)


Started GET "/" for 127.0.0.1 at 2018-01-19 16:13:46 -0500
Processing by IncidentsController#index as HTML
Completed 401 Unauthorized in 0ms (ActiveRecord: 0.0ms)

所以看起来登录正在工作,但是重定向到请求的路径( / )会导致 401 并被重定向到登录页面,就好像登录不起作用一样。

然而,这些都没有真正解释为什么我首先收到真实性 token 错误。

不确定调查问题的下一步可能是什么,因为据我所知,CSRF token 验证所需的所有元素都已到位。

最佳答案

我通过清除本地主机的 cookie 解决了这个问题。

我曾通过本地主机端口使用 SSH 隧道访问生产站点,因此基于冲突 session 和 secret_key_base 的 cookie在本地主机域中。

我通过在 cookie 名称前添加 Rails 环境来防止这种情况再次发生:

Rails.application.config.session_store :cookie_store, key: "_incidents_#{Rails.env}_session"

因此,尽管使用 localhost 来访问我的开发和生产环境,但由于处于不同的环境中,它们会写入不同的 cookie。

关于ruby-on-rails - Rails 中的真实性 token 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48349700/

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