用户未登录时如何屏蔽我的目标网页?

时间:2018-04-13 19:30:43

标签: ruby-on-rails nginx web

我在https://example.com

的轨道上建立了基于ruby的网络平台

我的登陆和关于网页是在https://examplecms.com的其他主机中的Wordpress中托管的。

我想要实现的是让用户访问https://example.com屏蔽https://examplecms.com,除非他们登录时我的平台的仪表板在根路径/中路由。 / p>

我要避免的是用户要在网址https://examplecms.com中查看。

到目前为止,我已经尝试了几个技巧:

  • 在我的家庭/索引操作控制器中,如果用户未登录,我已重定向到https://examplecms.com。但此操作失败,因为它仍会在用户的浏览器中显示CMS网址。< / LI>
  • 在指向CMS网站的主页/索引视图的呈现中使用Iframe。它的工作原理是因为它仍能正确显示我的网站网址,但这似乎有点可疑,但深度链接和导航似乎无法正常工作。

我一直在考虑使用.htaccess或甚至使用DNS策略在代理服务器级别进行,但是我无法找到这些策略的解决方案来检测用户何时登录?

有什么想法吗?

由于

更新: 堆栈:

  • Ubuntu的
  • Ruby on Rails
  • Nginx +乘客
  • Amazon Ec2 + Cloudflare DNS

3 个答案:

答案 0 :(得分:2)

您可以使用http://nginx.org/r/proxy_pass以静默方式将用户重定向到其他网页,而无需更改在浏览器的Location字段内向用户显示的网址。

要检查用户是否已登录,您可以通过http://nginx.org/r/error_page安装错误处理程序,仅在正常页面返回错误时重定向用户(例如,如果正常proxy_pass导致错误403 Forbidden响应,然后根据错误处理程序将用户的请求重定向到上游的替代proxy_pass

答案 1 :(得分:0)

您正在寻找的是路线范围。我正在使用Devise进行身份验证,它可以帮助您完成所需的操作,但我毫不怀疑您可以根据自己的需要进行调整。当用户点击网站上的任何页面时,它们会自动重定向到登录。如果他们已登录,则会将其重定向到他们输入的主页/网址。

authenticated :user do
  root to: 'titles#index'
end

devise_scope :user do
  root to: 'devise/sessions#new'
end

答案 2 :(得分:0)

创建子域

对于您的WordPress托管的Web内容,您可以在托管服务提供商上创建一个非常简单的子域,就像这样 Task<IActionResult>是examplecms.com的别名

使用设备Gem进行身份验证

您可以使用设备gem来验证用户身份并将用户路由到子域。当用户点击/ root_path时。