【问题标题】:Issue with session redirect in rails 3rails 3中的会话重定向问题
【发布时间】:2013-01-28 23:10:57
【问题描述】:

我在 Rails 3 中使用会话时遇到了一点问题。我将首先详细介绍我的一些工作环境。

我有一个托管在 heroku 上的应用程序,假设您的 URL 是 http://myapp.herokuapp.com

我有一个带有 CNAME 的域指向 heroku,假设它是 http://www.myapp.com

当我从我的应用程序向客户端发送电子邮件时,它包含一个指向应用程序受限区域的 url,那么完成的方式是:

http://www.myapp.com -> 电子邮件 -> http://www.myapp.com/secret

但是如何将用户重定向到http://www.myapp.com/log_in

的秘密区域

问题出在:Rails 保存了应用程序的实际 URL,在本例中为 http://myapp.herokuapp.com,登录后它会将用户重定向到 http://myapp.herokuapp.com/secret!而且我不想要它,希望它在字段中继续http://myapp.com

有什么办法吗?

【问题讨论】:

  • 显示任何相关代码会很有用。
  • 真的吗?你想看什么样的代码?因为 Rails 会自动思考。我将这个人发送到 myapp.com/secret,但 Rails 存储 URL myapp.herokuapp.com/secret ,登录后用户被重定向到该 URL。我想将他重定向到 myapp.com/secret URL。
  • @Deefour 他基本上是在问如何在 heroku rails 应用程序上设置默认域名。对我来说似乎是一个很好的有效问题。

标签: ruby-on-rails ruby session redirect heroku


【解决方案1】:

试试这个:

redirect_to secret_path( host: 'myapp.com' )

redirect_to url_for( action: 'my_action', host: SOME_DEFAULT_HOST ) 

编辑

我不确定我是否很好地理解了您的问题 - 您的意思是 保存 DB 中的 URI 吗?

恕我直言,保存硬编码的网址可能会很麻烦。

如果可能,请尝试保存解构的 URI 部分而不是完整的字符串路径,以便稍后将 args 发送到 url_for 或任何路径助手(并根据需要调整它,或立即更新整个表以更改以主机为例)。

如果没有,您始终可以使用您选择的任何库解析保存的 URI,然后在重定向之前对其进行调整

【讨论】:

  • 谢谢,就是这样!顺便说一句,我没有将 URLS 保存在 DB 中,而是将它们保存在环境变量中,例如 ENV['HOST'],因为我的开发环境是 localhost,而生产应用程序是 heroku。我只是将这个生产环境更改为 myapp.com 而不是 myapp.herokuapp.com
猜你喜欢
  • 1970-01-01
  • 2011-10-20
  • 2011-04-11
  • 2011-06-26
  • 2015-09-17
  • 2012-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多