2013-09-23 78 views
2

在rails 4路由中強制https的正確方法是什麼?強制https在Rails 4路由

比如我希望能夠做一些事情,如:

get 'success' => 'ssl#success', :ssl_only => true 

但是,這並不做任何事情。

回答

4

您可以使用force_ssl強制http://site/success重定向到https://site/success。請參閱force_ssl的文檔。

class SSLController < ApplicationController 
    force_ssl only: :success # see docs for more options 
end 

Related question

+0

是的,我知道那個,似乎應該有一個軌道4技巧來強制它在路線中。 – pguardiario

+0

我不太明白。你想達到什麼目的? –

+0

類似@ Rajarshi的解決方案,但他不適合我。 – pguardiario

0

如果你想https://.../ssl/success

scope constraints: { protocol: 'https' } do 
    get 'success', to: 'ssl#success', as: 'success' 
end 

get 'success', to: 'ssl#success', as: 'success', constraints: { protocol: 'https' } 
+0

不,我希望https://mysite.com/success轉到ssl#成功。這個答案不適合我。 – pguardiario

+0

對不起,我沒有得到是你的控制器?成功就是你的行動? –

+0

是的,沒錯。 – pguardiario

0

我最終得到了這一起工作:

get 'success', to: 'ssl#success', constraints: {protocol: /https/} 
+0

希望它和我的帖子一樣... excpt'https'to/https/ –

+0

我知道,這是一件小事。我的直覺是協議實際上是'https://'或什麼的,這就是正則表達式工作的原因,但不是字符串。 – pguardiario

+0

你應該接受Rajarshi的回答然後... – frandroid

0

對我來說,它的工作由application_controller.rb加入 「force_ssl」。