ssl - 为 Rails 2 中的所有页面设置 ssl_allowed/ssl_required?

标签 ssl https ruby-on-rails-2

我发现当页面使用 SSL/HTTPS 时,AJAX 调用在我的 Rails 站点上不起作用。我通过添加

解决了这个问题
ssl_allowed :action1, :action2, :actionN

相关的 Controller 。

我预见到这会很痛苦并且将来容易出现错误,因为我无疑会忘记向 ssl_allowed 列表添加一个操作。

有没有办法在 [ssl_requirement][1] gem 中为我站点中每个 Controller 的所有操作全局打开 ssl_allowed/ssl_required?我尝试将以下内容添加到 ApplicationController,但这没有用:

ssl_allowed :all

最佳答案

如果您不想依赖 fork 插件,您可以覆盖 ssl_allowed?在你的 Controller 中:

 class ApplicationController < ActionController::Base
    ...
    private

    def ssl_allowed?
       true
    end
 end

编辑:不是我想的那样。它不是为未指定 ssl_required 的页面禁用到 http 的重定向,而是短路整个重定向过程以不执行任何操作。这真是太糟了。代码:

 def ensure_proper_protocol
   return true if ssl_allowed?

   if ssl_required? && !request.ssl?
     redirect_to "https://" + request.host + request.request_uri
     flash.keep
     return false
   elsif request.ssl? && !ssl_required?
     redirect_to "http://" + request.host + request.request_uri
     flash.keep
     return false
   end
 end

添加 ssl_allowed?如果代码改为:

def ensure_proper_protocol
  if ssl_required? && !request.ssl?
    redirect_to "https://" + request.host + request.request_uri
    flash.keep
    return false
  elsif request.ssl? && !ssl_required? && !ssl_allowed?
    redirect_to "http://" + request.host + request.request_uri
    flash.keep
    return false
  end
end

关于ssl - 为 Rails 2 中的所有页面设置 ssl_allowed/ssl_required?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4961374/

相关文章:

ruby - 每小时 cron 消息重新 openssl 证书使用错误

使用 Optimistic TLS 从 SendGrid 到 Office365 的电子邮件加密可靠性

java - 使用 BouncyCaSTLe 进行简单的 HTTPS 查询

IOS - 使用基于传输的安全性 (HTTPS) 调用 soap web 服务

ruby-on-rails - 如何将引用列更改为多态?

ruby-on-rails - (config.filter_parameters) 相当于 Rails 2.3.5

python - 使用 Python 确定 SSL 证书是否是自签名的

node.js - 在套接字流应用程序中启用 ssl

ssl - Wamp SSL :- redirect http to https

elasticsearch - ElasticSearch中具有独立过滤器的多类型搜索