0

wpCAS插件似乎正在工作:我在包含WordPress安装(即)的网站上有一个子域,并且我正在运行WordPress GitHub Repo以及Capistrano以进行实际部署。这很重要,因为由于此设置,内容位于子目录中,即. 结果是,为了访问站点的管理部分,我必须在浏览器中输入。然而,访问前端网站只需要我输入. 够迷惑吗?test.mywebsite.comtest.mywebsite.com/wptest.mywebsite.com/wp/wp-admintest.website.com

我正在使用本地主机 MAMP 服务器测试所有这些。test.mywebsite.com我还通过我的 Mac文件将 IP 重定向到我的本地机器也应该毫无价值hosts,所以一切都在本地机器上正确进行。

现在,问题来了:我将 wpCAS 插件与RubyCAS 服务器一起使用。一切正常,直到实际登录过程。

wpCAS 旨在简单地将登录页面重定向到我的 CAS 登录名,然后将输入到 CAS 界面的凭据与 WordPress 数据库中的凭据进行匹配。如果匹配,它(理论上)会将我带到管理页面,并且我的凭据已登录并正常工作。

作为此设置的结果,我的输入localhost/wp/wp-admin会将我带到auth.mywebsite.comCAS 界面,我可以在其中输入我的凭据。

但是,一旦我将凭据放入 CAS 接口,我就会遇到如下所示的重定向循环

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

wp-admin/

我们就这样绕来绕去!

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

4

1 回答 1

1

我得到了它!在插件文件夹wpcas.php内的文件中,第 85-123 行详细说明了wpCASwpCAS的实际登录功能。第 104108行详细介绍了 wpCAS 如何将您重定向到管理页面:

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的重定向循环。然而,多亏了这个技巧(非常感谢 Luigi Balzano 先生),我找到了解决方案。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 及以下版本完美配合。

希望这对您 wpCAS vagrants 有所帮助!

于 2013-03-13T17:59:30.767 回答