你好 ![]()
我正在寻找一种方法,按国家/地区强制要求登录网站。我找到了这个插件 Geo Blocking plugin,这可能最接近我的用例,但 Ruby 目前超出了我的能力范围……不过。我认为该插件也许可以修改,以实现这种方式,为特定国家/地区启用“登录必需”,并重定向到 /login?
感谢任何建议!![]()
你好 ![]()
我正在寻找一种方法,按国家/地区强制要求登录网站。我找到了这个插件 Geo Blocking plugin,这可能最接近我的用例,但 Ruby 目前超出了我的能力范围……不过。我认为该插件也许可以修改,以实现这种方式,为特定国家/地区启用“登录必需”,并重定向到 /login?
感谢任何建议!![]()
你好 ![]()
我之所以必须进行此更改,主要原因是新的国家/地区特定法律法规影响了我的网站。我的网站和主题仅面向 18 岁以上成年人。但我不希望影响 SEO。因此,我首先想到的是在特定国家/地区强制要求登录,这样 Google 机器人和其他爬虫就可以在其他国家/地区抓取网站。完全强制登录似乎不是一个好选择,因为它会阻止整个网站及其内容。
我决定将其设置为客户端,这似乎是另一个不错的选择,因此以一种温和的客户端方式强制要求登录。目前这似乎足够了,所以我从这里开始。
我认为在这里分享我使用的完整代码不是最好的主意,因为它可能不适用于其他用例,而且可能不是最终版本,当然它会严重修改登录系统。
整个过程现在通过两个独立的主题组件协同工作,未来可能会合并。
但在执行此操作之前,我必须修改其他一些内容。首先,我们选择的机器人可以豁免整个过程,仍然可以抓取网站。Discourse 有一个静态登录页面,在启用 login required 站点设置时处于活动状态。没有这个,当你访问 site.com/login 时,它会重定向到网站的实际主页并打开登录模态框。我禁用了此功能,并使其将访问者保留在 /login 页面上。应用程序的 JavaScript 文件中还有其他一些部分需要修改。例如:canDisplaySidebar() 用于隐藏侧边栏。loginRequired() 用于不要求站点设置并允许访问者访问。showSiteHeader 用于仅在我们想要时渲染标题,当相关 cookie 启用时它会渲染。
为了实现这一点,我对这个组件进行了大量修改 GitHub - discourse/discourse-splash-screen: A welcome splash screen for first time users
我在 18+(您是否年满 18 岁?)屏幕上添加了一个门,并在第一个屏幕上添加了一些其他信息。
如果访问者点击 否,它将添加一个键值存储项,该项会销毁 18+ 页面并将访问者重定向到一个已发布的文章页面,我们写了关于成瘾如何影响青少年以及为什么我们的网站仅供成人使用……并放置一个键值存储项以使访问者停留在该页面上。因此,键值存储项执行两项操作。
如果访问者点击 是,他们将跳转到关于 Cookie 信息的第二个屏幕。在这里,访问者可以了解我们使用的 Cookie。点击 好的,我明白了 按钮,我们会在浏览器中放置一个 Cookie 同意 Cookie,有效期为 1 年。这很重要,因为我们也对登录用户使用此组件部分。他们每年都必须同意 Cookie 政策。因此,Cookie 同意 Cookie 执行三项操作。
此主题组件将登录页面模板化,类似于访客门或受限类别主题组件,但它是基于 URL 的全页面渲染。它有两个设置。
允许的 URL 和一个不允许的 URL。
*,表示在所有 URL 上渲染该门。/about , /tos, /faq , /privacy , 其他注册页面 等…当它渲染时,它会自动重定向到 /login 页面。我用我的模板覆盖了整个静态登录页面模板,其中包含社交登录等部分。我们不在 /login 页面上渲染该组件。
这大致就是我为实现这一目标所做的。
很有意思,Don!感谢分享这些细节。 ![]()
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.