Ruby on rails 在轨道上设计';无法使用HTTPs

Ruby on rails 在轨道上设计';无法使用HTTPs,ruby-on-rails,ruby,ssl,https,devise,Ruby On Rails,Ruby,Ssl,Https,Devise,按下“登录”按钮后,出现以下错误: ActionController::InvalidAuthenticityToken in Devise::SessionsController#create 无论现有用户的凭据如何 如果我按下按钮登录,用户登录,应用程序似乎工作顺利,只是用户也无法在HTTPs下创建帖子 我想让design身份验证在SSL下工作 routes.rb: devise_for :users 应用程序_controller.rb: class ApplicationContro

按下“登录”按钮后,出现以下错误:

ActionController::InvalidAuthenticityToken in Devise::SessionsController#create
无论现有用户的凭据如何

如果我按下按钮登录,用户登录,应用程序似乎工作顺利,只是用户也无法在HTTPs下创建帖子

我想让design身份验证在SSL下工作

routes.rb:

devise_for :users
应用程序_controller.rb:

class ApplicationController < ActionController::Base
    protect_from_forgery with: :exception
end
在config/environments/production.rb中


在控制器中放置一行

skip_before_action :verify_authenticity_token
class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
  ....
end
在routes.rb中

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

因为用户登录时不需要身份验证\u令牌

在会话\u控制器中放置一行

skip_before_action :verify_authenticity_token
class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
  ....
end
在routes.rb中

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

由于用户登录时不需要身份验证令牌,因此有一种解决方法,可以在应用程序控制器中禁用对正在运行的签名的CSRF保护

skip_before_action :verify_authenticity_token
class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
  ....
end
class ApplicationController
设置为:

class ApplicationController < ActionController::Base
  protect_from_forgery  with: :exception
  skip_before_filter :verify_authenticity_token, if: -> { controller_name == 'sessions' && action_name == 'create' }
  ...
end
class ApplicationController{controller\u name=='sessions'&&action\u name=='create'}
...
结束

对于应用程序控制器中正在运行的标志,存在禁用CSRF保护的解决方法

skip_before_action :verify_authenticity_token
class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
  ....
end
class ApplicationController
设置为:

class ApplicationController < ActionController::Base
  protect_from_forgery  with: :exception
  skip_before_filter :verify_authenticity_token, if: -> { controller_name == 'sessions' && action_name == 'create' }
  ...
end
class ApplicationController{controller\u name=='sessions'&&action\u name=='create'}
...
结束

可能这将解决您的问题@bunty,好吧,它没有这可能这将解决您的问题@bunty,好吧,它没有这可能,sessions\u controller在哪里?我将尝试在controllers/users/sessions folderError:uninitialized constant users::sessions controller中创建sessions\u controller.rb。我似乎需要您提供更多详细的解释。sessions\u controller由Desive自身应用程序/controllers/users/sessions\u controller.rbMayur生成,sessions\u controller在哪里?我将尝试在controllers/users/sessions folderError:uninitialized constant users::sessions controller中创建sessions\u controller.rb。我似乎需要您提供更多详细的解释。sessions\u controller是由Desive自身应用程序/controllers/users/sessions\u controller.rb生成的