关于auth_reDirect()的说明

时间:2014-12-24 作者:Mark

我发现,试图保护一些将非登录用户重定向到登录页面的页面的安全auth_redirect() 作用here

Docs说“检查用户是否登录,if not 它会将他们重定向到登录页面”。

现在,如果是这样,为什么我需要预先准备if(!is_user_logged_in()) 使功能正常工作?应该不需要它,但如果我忽略它,我将永远被重定向。

使用此功能的正确方法是什么?

1 个回复
SO网友:butlerblog

答案需要一点WP取证,因为此功能自1.5版起就在WordPress中,但在此过程中发生了一些变化。但是,有一点没有改变,那就是描述“检查用户是否登录,如果没有,它会将用户重定向到登录页面。”

我认为从技术上来说应该是这样的。在最初的迭代中,它做到了。

然而,引入了一些糟糕的条件逻辑,使其无法正常工作。在WP(4.1.1)的当前版本中,问题(或其中一个)是这一行:

if ( $user_id = wp_validate_auth_cookie( \'\',  $scheme) ) {
由于单个“=”,此比较逻辑不起作用。它应该做的是将$user\\u id与返回的wp\\u validate\\u auth\\u cookie()值进行比较,如果用户登录,该值将返回用户id。

但这并不像修复逻辑那么简单。如果查看函数,$user\\u id未定义。我怀疑它应该是一个全局变量,但我不确定。

我回顾了这个函数的历史,看看这个问题是何时引入的,并发现它出现在2.7中。多年来,这一直是函数的一个问题。在此更改之前,逻辑只是测试从wp\\u validate\\u auth\\u cookie()返回的有效(非false)值,而不是将该值与登录用户的用户ID进行比较。

我认为修复比较逻辑并添加全局$user\\u id可能是纠正函数问题的解决方案。我将对此进行测试,并将此作为建议的修复提交。

结束

相关推荐

在Functions.php中正确地将首页的CSS-TEMPLATE_REDIRECT排队?

我想加载一些特定的css来更改WP首页/主页的主体元素的颜色。在我的主题函数文件中,以下代码似乎有效,但有人能告诉我它是否“正确”吗?//Adding and Encuing styles for Front Page add_action( \'template_redirect\', \'front_page_design\' ); function front_page_design(){ if ( is_front_page() || is_home())