使URL仅在应用程序内可用

时间:2011-06-16 16:18:51

标签: ruby-on-rails

说,我有一个网址来编辑帖子 ... / posts / 1 / edit

当用户将其粘贴到浏览器上时,我不希望此URL导航到链接。但是,如果我在应用程序中有一个指向此URL的链接,则应用程序应该路由到此URL。

是否有可能实现这样的目标?

我在应用程序中没有身份验证系统。

我只是想看看它是否有一个优雅的解决方案。否则,我相信我可以找到方法。感谢。

2 个答案:

答案 0 :(得分:3)

使用request.referer获取用户来自的页面。这应该可以让你实现你想要的。请注意,这不是100%可靠,有时可能未设置referer标头。但在大多数情况下它会起作用。

或者,您可以设置一个会话变量,指示是否允许用户打开页面(使用session[:allowed] = true在主页面上设置会话变量,检查其在隐藏页面上的存在) 。当用户没有设置会话变量时,渲染错误或重定向到主页面(类似render :status=>403 and return unless session[:allowed])。

答案 1 :(得分:1)

其中一种简单的方法是使用GET请求发送一个唯一的标头,并在编辑页面中确保验证此标头,并且只有当它存在时才继续,否则抛出401。

为了使它更简单,发送一个独特的参数,如/ posts / 1 / edit?application =“not-browser-1234”

并在编辑页面

如果$ _GET [application]!=“not-browser-1234”    出口