Rails SSL要求插件--在重定向到https之前,它不应该检查您是否处于生产模式吗?

4

看看ssl_requirement插件。

它不应该检查您是否处于生产模式吗?我们在开发模式下看到了一个重定向到https,这似乎很奇怪。或者说这是插件的正常行为吗?我记得它过去的行为不同。

5个回答

6

我猜想他们认为在开发模式下,你应该使用HTTPS(可能是自签名证书)。如果这不是期望的行为,你可以自己特殊处理开发环境中的SSL行为:

class YourController < ApplicationController
  ssl_required :update unless Rails.env.development?
end

我在开发和测试模式中始终使用ssl_required,以确保我的ssl重定向确实正常工作。我发现最简单的方法是使用Nginx将ssl代理到一个thin服务器。 - The Who

4
  def ssl_required?
    return false if local_request? || RAILS_ENV == 'test' || RAILS_ENV == 'development'
    super
  end

0

在开发环境中要求SSL没有太大意义。

您可以使用Rails内置的模拟工具来存根插件的ssl_required?方法。

在应用程序根目录下创建一个文件test/mocks/development/application.rb

require 'controllers/application_controller'

class ApplicationController < ActionController::Base
  def ssl_required?
    false
  end
end

这样在开发环境中就不需要 SSL。


0
理想情况下,您应该测试您的应用程序在敏感阶段重定向到https。

0

实际上,通过https重定向是Web服务器的责任。在Rails中为每个请求添加额外的请求哈希验证是我的个人意见负担过重。我编写了nginx 配置文件,其中包括以下重写:

rewrite ^(.*) https://$host$1 permanent;


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接