Включить SSL для определенных действий с ресурсами - PullRequest
0 голосов
/ 23 июля 2011

Мои настройки: 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 Ответ

1 голос
/ 23 июля 2011

Хотя вы можете создать пользовательский класс ограничений для перемещения логики SSL из объявлений ресурсов, я рекомендую gem . Он сохранит ваш файл маршрутов в чистоте и заставит SSL работать только на производстве. (Эта логика также может быть включена в пользовательское ограничение, но вам также придется управлять ссылками на форму). Вы должны сделать

class ProjectsController
  include ::SslRequirement
  ssl_required :create
end

<%= form_for(@project, projects_url(:secure => true)) do |f| %>
<% end %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...