我在我的应用中有条件地重定向到SSL。我是用户和管理员模型,都配置了devise_for
。我正在将rails_admin
与Admin模型一起使用,并将我自己的CMS内容用于Users模型。
在application_controller
我有一个之前的过滤器check_ssl
,如果user_signed_in? || controller_name == 'registrations' || controller_name == 'sessions'
和!request.ssl?
重定向到SSL。
我通过观察我的日志来验证逻辑。
/admins/sign_in
。 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)
这是怎么回事?
答案 0 :(得分:0)
为了使这项工作正常,我最终不得不手动构建我的重定向网址:
"#{protocol}://#{host}#{request.fullpath}"