Cookies are now tied to internal sessions in WordPress 4.0.
这意味着使用基本cookie身份验证的插件将遇到问题,因为发布帖子或页面(以及更新插件或核心)需要令牌。我已经在三个不同的网桥插件中看到了这一报告。
旧方法(在许多插件中使用)是wp_set_auth_cookie($user_id,0,0)
但这将不再有效。用户已登录到该网站,但具有正确角色的用户无法发布帖子或页面。相反,会返回一个nonce错误(“您确定要这样做吗?)
这是我尝试过的新代码(在许多其他尝试中),但仍然得到相同的nonce错误。
wp_set_auth_cookie( $user_id, 0, 0 );
$manager = WP_Session_Tokens::get_instance( $user_id );
$token = $manager->create( $expiration );
为了解决此问题,暂时将wp\\u verify\\u nonce设置为始终返回1。但是,我想知道如何在cookie集上创建令牌。
有人克服了这个问题吗?既然这是WP的所有新代码,有人有什么建议吗?
更新:今天晚上花了几个小时再次研究这个问题。。。我意识到Zend_Debug::dump($_COOKIE);
可能会有帮助。果然,两个cookie中的字符串不匹配。
这两个字符串在hmac中不匹配。
\'wordpress\\u logged\\u in\\u 4ed466320671a355e05b9bf211271dd6\'
\'wordpress\\u 4ed466320671a355e05b9bf211271dd6\'
有趣的是,如果我Zend_Debug::dump($cookie_elements[\'hmac\']);
返回的字符串与wordpress\\u 4…匹配。。。。值,而不是wordpress\\u logged\\u。
不匹配会导致nonce错误。