Rails 3, перенаправление с https на https, перезаписать _path helper - PullRequest
1 голос
/ 28 сентября 2011

Я хочу иметь смешанный https / http сайт.

Более того, я хочу перенаправления с https на http (т. Е. После успешного входа пользователя он должен перенаправить на корневую страницу на http).

Драгоценные камни как:

  • rack-ssl
  • rack-ssl-inspecer

работает отлично, но только если вы хотите, чтобы весь сайт был на https "Смешанный http / https "только с ssl при действиях A, B, C и только http при D, E, F - не работает.

Я проверил решение из другого потока SO:

Rails 3 SSL маршрутизация перенаправляет с https на http

Почти работает.Его простой в написании скрипт, который изменит (на целых представлениях) помощник с "_path" на "_url".

Но есть проблема со ссылками типа:

<%= link_to "model", some_model %>
<%= link_to "edit model", edit_mode_url(model) %>
...

Есть многоРазные модели, и я часто использую «модель» в итерационных блоках, поэтому решение, основанное на сценарии «перезаписи», не будет работать с этим.

Вопросы:

Есть лиспособ изменить поведение <%= link_to 'model', model %> кода, чтобы это исправить?Есть ли возможность перезаписать путь помощника (стандартный протокол будет http, по параметру giver - https)?

Или, может быть, есть другое решение, которое я еще не нашел?

Редактировать:

Я работаю с Rails 3.0.9.

Ответы [ 2 ]

1 голос
/ 04 октября 2016

Если вы хотите добавить https к определенному маршруту

Вы можете использовать этот код

before_filter :redirect_to_https
def redirect_to_https
     redirect_to :protocol => "https://" unless (request.ssl? || request.local?)
end

Вы можете определить маршруты, которые вы хотели бы использовать с действием before_filter, просто выполнив следующую команду

before_filter :redirect_to_https, :except => [:action1 , :action2]
before_filter :redirect_to_https, :only => [:action1 , :action2]
0 голосов
/ 07 октября 2011

Используйте этот драгоценный камень:

https://github.com/retr0h/ssl_requirement

gem install ssl_requirement

Затем добавьте ssl_required :new, :destroy #others actions к вашим контроллерам.

Если вы используетеПридумайте перезаписать каждый контроллер и указать все действия

devise_for :users, :controllers => { :confirmations => "confirmations", :omniauth_callbacks => "omniauth_callbacks", :passwords => "passwords",  :registrations => "registrations", :sessions => "sessions", :unlocks => "unlocks" } do
# etc
end

. Он работает с Rails 3.0.x

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...