WordPress ReAuth=1带wpCAS的循环

时间:2013-03-12 作者:Jordan Thornquest

这个wpCAS plugin 似乎正在工作:我有一个subdomain 在包含WordPress 安装(即。test.mywebsite.com), 我正在通过一个WordPress GitHub Repo 随着Capistrano 用于实际部署。这很重要,因为由于这种设置,内容位于子目录中,即。test.mywebsite.com/wp. 结果是,为了访问站点的管理部分,我必须输入test.mywebsite.com/wp/wp-admin 在我的浏览器中。然而,访问前端网站只需要我输入test.website.com. 够让人困惑吗?

我正在用一个localhost MAMP server. 我还重定向了test.mywebsite.com 通过我的Mac电脑发送到我的本地邮箱hosts 文件,因此所有内容都正确地发生在本地框上。

现在,这里有一个陷阱:我正在使用带有RubyCAS server. 在实际登录过程之前,一切正常。

WPCA旨在re-direct the login page to my CAS login, 然后match the credentials 与WordPress数据库中的内容一起输入CAS界面。如果有匹配,它(理论上)会将我带到管理页面,并且我的凭据已登录并正常工作。

由于此设置,我键入localhost/wp/wp-admin 带我去auth.mywebsite.com, CAS接口,我可以在其中输入凭据。

然而,一旦我将凭据放入CAS接口,我就会被redirect loop 看起来像:

wp-login.php?redirect_to=http%3A%2F%2Flocalhost%2Fwp%2Fwp-admin%2F&reauth=1

wp-admin/

所以,我们到处走!

你知道为什么会发生这种情况,以及如何解决这个问题吗?

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

我明白了!在wpcas.php 文件内部的wpCAS 插件文件夹,第85-123行详细说明了wpCAS. Lines 104 &;108 有关WPCA如何将您重定向到管理页面的详细信息:

104:

wp_redirect( preg_match( \'/^http/\', $_GET[\'redirect_to\'] ) ? $_GET[\'redirect_to\'] : site_url( $_GET[\'redirect_to\'] ));
108:

wp_redirect( site_url( \'/wp-admin/\' ));
但是,这会导致(出于我未知的原因)的重定向循环DOOM. 幸亏this tip, 然而(非常感谢路易吉·巴尔扎诺先生),我找到了一个解决办法。更改wp_redirect 这两行上的函数wp_safe_redirect, 像这样:

104:

wp_safe_redirect( preg_match( \'/^http/\', $_GET[\'redirect_to\'] ) ? $_GET[\'redirect_to\'] : site_url( $_GET[\'redirect_to\'] ));
108:

wp_safe_redirect( site_url( \'/wp-admin/\' ));
这把我从DOOM.

尽管这个插件已经有两年的历史了,但它仍然可以很好地使用WordPress 版本3.5.1及以下。

希望这对你们这些流浪汉有所帮助!

结束

相关推荐

让用户从wp-login.php直接登录到站点主页,而不是仪表板

我目前正在使用一个名为Sidebar Login 它允许用户绕过仪表板直接访问站点。但是,当用户通过/wp-login.php (例如,当他们在电子邮件中单击验证链接时),他们会再次被发送到仪表板。我希望用户能够点击他们的验证链接,并将他们定向到网站主页,在那里他们可以通过我设置的侧边栏登录登录。这可能吗?