需要授权才能访问RSS提要,但将帖子保留为公开

时间:2013-01-31 作者:Jake Lisby

有没有一种方法可以在不阻止访问单个帖子或页面的情况下保护我的WPMU安装中的所有RSS提要?本质上,我希望任何人都可以访问各个页面,但聚合列表应该需要身份验证代码。

有人有什么建议或指导我吗?

1 个回复
最合适的回答,由SO网友:Mark Kaplun 整理而成

根据评论,您可以有几个选项。更简单的方法是在URL处检查一个特殊参数,这假设您向他们提供URL,并且他们在用于获取提要的任何软件中手动配置它。例如,您将URL作为mysite提供给他们。com/源?pass=123456,其中pass是secret参数,123456是正确的值

add_action(\'init\',\'wase_83868_init\',1);
function wase_83868_init() {
  if (is_feed()) { // if access to RSS feed
    if (!isset($_GET[\'pass\']) || ($_GET[\'pass\'] != \'123456\'))
      wp_die(\'Only paying costumers can read the RSS feed\',403); // failed check, reject
  }
}
您可能还想从提要中删除指向RSS的链接,如建议的那样here

这个选项的问题是,这个秘密并不是什么秘密,你必须相信你所给的人不会泄露它。因此,另一种选择是按IP地址过滤。而不是URL参数。

add_action(\'init\',\'wase_83868_init\',1);
function wase_83868_init() {
  if (is_feed()) { // if access to RSS feed
    if ($_SERVER[\'REMOTE_ADDR\'] != \'192.132.14.12\'))
      wp_die(\'Only paying costumers can read the RSS feed\',403); // failed check, reject
  }
}
最终的选择是创建一个用户,并仅向登录用户提供RSS。

add_action(\'init\',\'wase_83868_init\',1);
function wase_83868_init() {
  if (is_feed()) { // if access to RSS feed
    if (!user logged in and have permission)
      wp_die(\'Only paying costumers can read the RSS feed\',403); // failed check, reject
  }
}
这种方法的问题是,在获取RSS以获取身份验证cookie之前,客户的软件必须先进行登录。

结束