0

我有条件地在我的应用程序中重定向到 SSL。I User 和 Admin 模型,都配置了devise_for. 我正在使用rails_adminAdmin 模型,以及我自己的 Users 模型的 CMS 东西。

application_controller我有一个 before 过滤器check_ssl,它重定向到 SSL ifuser_signed_in? || controller_name == 'registrations' || controller_name == 'sessions'!request.ssl?.

我通过查看日志验证了逻辑。

问题

  • 当我尝试访问 /admin 以获取我的 RailsAdmin 界面时,它检测到我没有登录并正确重定向到/admins/sign_in.
  • 我的 SSLbefore_filter运行并发现它当前不是 SSL。我的日志:
    ssl? is false and fullpath is /admins/sign_in
    应该使用ssl
    重定向到https://foo.com/login
    ssl?为真且完整路径为 /login
    

/login是我的User模型的登录路径,而不是我的Admin模型。
重定向代码的字面意思是: redirect_to({:protocol => 'https'}, :flash => flash)
这里发生了什么?

4

1 回答 1

0

为了使这项工作正常,我最终不得不手动构建我的重定向 url:

  "#{protocol}://#{host}#{request.fullpath}"
于 2012-12-07T16:37:33.417 回答