2011-07-22 60 views
0

我的设置:Rails 3.0.9,Ruby 1.9.2为某些资源操作启用SSL

我希望只为项目的创建操作启用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

尽管您可以创建一个custom constraint class以将SSL逻辑移出资源声明,但我建议您使用此gem。它将保持您的路由文件清洁并仅在生产中强制使用SSL。 (这个逻辑可能会烤到自定义约束为好,但你也必须管理的形式链接了。)你会做

class ProjectsController 
    include ::SslRequirement 
    ssl_required :create 
end 

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

我只是尝试这样做,但即使在发展ENV执行HTTPS? – Bob

+0

等一下,有两个版本https://github.com/retr0h/ssl_requirement和https://github.com/retr0h/ssl_requirement,有什么区别? – Bob

相关问题