使用多个Devise模型时出现意外的重定向行为

时间:2012-10-13 15:55:52

标签: ruby-on-rails devise

我在我的应用中有条件地重定向到SSL。我是用户和管理员模型,都配置了devise_for。我正在将rails_admin与Admin模型一起使用,并将我自己的CMS内容用于Users模型。

application_controller我有一个之前的过滤器check_ssl,如果user_signed_in? || controller_name == 'registrations' || controller_name == 'sessions'!request.ssl?重定向到SSL。

我通过观察我的日志来验证逻辑。

问题

  • 当我尝试访问/ admin以获取我的RailsAdmin界面时,它会检测到我没有登录并正确重定向到/admins/sign_in
  • 我的SSL before_filter运行并发现它当前不是SSL。我的日志:
    ssl? is false and fullpath is /admins/sign_in
    should use ssl
    Redirected to https://foo.com/login
    ssl? is true and fullpath is /login
    

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

1 个答案:

答案 0 :(得分:0)

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

  "#{protocol}://#{host}#{request.fullpath}"