gpt4 book ai didi

ruby-on-rails - 在 Rails 中设计不适用于 HTTPs

转载 作者:太空宇宙 更新时间:2023-11-03 13:34:50 26 4
gpt4 key购买 nike

在我按下“登录”按钮后 https://myapp.com/users/sign_in ,出现如下错误:

ActionController::InvalidAuthenticityToken in Devise::SessionsController#create

不管现有用户的凭据如何。

如果我在 http://myapp.com/users/sign_in 上按下按钮登录,用户登录并且应用程序似乎运行顺利,除了用户也无法在 HTTPs 下创建帖子。

我想让设备身份验证在 SSL 下工作。

路线.rb:

devise_for :users

应用程序 Controller .rb:

class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
end

用户.rb:

class User < ApplicationRecord
devise :database_authenticatable, :recoverable, :rememberable, :registerable, :trackable, :validatable
end
  1. 我有 <%= csrf_meta_tags %>在头上
  2. 我清除了浏览器中的 cookie
  3. 我试过了 protect_from_forgery with: :null_session而不是 protect_from_forgery with: :exception在应用程序/ Controller /application_controller.rb
  4. 我试着把<%= hidden_field_tag :authenticity_token, form_authenticity_token %>form_for新 session
  5. 我试过了 devise_for :users, :controllers => { :sessions => "users/sessions" }在根
  6. 我尝试添加

    config.to_prepare { Devise::SessionsController.force_ssl }
    config.to_prepare { Devise::RegistrationsController.force_ssl }
    config.to_prepare { Devise::PasswordsController.force_ssl }

    在 config/environments/production.rb 中

最佳答案

在sessions_controller中放一行

skip_before_action :verify_authenticity_token

在 routes.rb 中

devise_for :users, controllers:
{
sessions: 'users/sessions',
}

因为用户登录时不需要authentication_token

关于ruby-on-rails - 在 Rails 中设计不适用于 HTTPs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43231308/

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