为某些资源操作启用SSL

时间:2011-07-22 21:34:54

标签: ruby-on-rails

我的设置:Rails 3.0.9,Ruby 1.9.2

我希望仅为项目的创建操作启用SSL,我该怎么做?目前我有

  resources :projects, :constraints => { :protocol => 'https' }, :only => :create
  resources :projects, :except => :create

我认为这不是很正确。

已更新

我已将其更改为

  match 'projects' => 'projects#create', :constraints => { :protocol => 'https' }, :via => :post
  resources :projects, :except => :create

我认为这样做更好但​​是还有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

虽然你可以创建一个custom constraint class来将SSL逻辑移出资源声明,但我推荐这个gem。它将使您的路径文件保持干净,并仅在生产中强制使用SSL。 (这个逻辑也可以融入自定义约束中,但你也必须管理表单链接。)你会这样做

class ProjectsController
  include ::SslRequirement
  ssl_required :create
end

<%= form_for(@project, projects_url(:secure => true)) do |f| %>
<% end %>