Vic*_*Lam 20 ssl ruby-on-rails ruby-on-rails-2
我有一个需要在SSL下运行的Rails应用程序.我尝试了ssl_requirement,但似乎我必须输入每个控制器中的所有操作.
是否有任何方法可以在应用程序控制器中使用ssl_requirement添加before_filter,以便当用户请求在http时,应用程序将自动重定向到https?
谢谢大家.:)
Sim*_*tti 32
使用机架中间件.
# lib/force_ssl.rb
class ForceSSL
def initialize(app)
@app = app
end
def call(env)
if env['HTTPS'] == 'on' || env['HTTP_X_FORWARDED_PROTO'] == 'https'
@app.call(env)
else
req = Rack::Request.new(env)
[301, { "Location" => req.url.gsub(/^http:/, "https:") }, []]
end
end
end
# config/environment.rb
config.middleware.use "ForceSSL"
Run Code Online (Sandbox Code Playgroud)
您可以尝试测试请求是否在ssl中,或者是否在应用程序的before_filter中
class Application < AC::Base
before_filter :need_ssl
def need_ssl
redirect_to "https://#{request.host}/#{request.query_string}" unless request.ssl?
end
end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
14503 次 |
最近记录: |