如何使AJAX登录表单在启用force_ssl_admin的情况下工作?

时间:2010-09-29 作者:goldenapples

我在一个网站上工作,该网站需要一个https安全的管理区域和一个安全的前端区域,以及显示私人信息的区域。我对用户登录的偏好是一个支持Ajax的小部件,它可以显示在站点的每个页面上,但当将提交的表单数据从非安全页面传递到登录页面时,我无法使其工作。

我从使用Login With Ajax 插件经过一些修改后,在很大程度上可以很好地使用SSL,当从https访问的页面登录时,它可以很好地工作。。。当关闭FORCE\\u SSL\\u ADMIN时,它也可以正常工作。但是,当尝试在启用FORCE\\u SSL\\u ADMIN的非安全页面上从小部件登录时,我无法从服务器获得响应。

有没有解决这个问题的现有插件?如果没有,有人有什么解决方案吗?也许到目前为止,嵌入在iframe中的安全表单是我最好的主意。。。只是想一定有更简单的方法。

*编辑:悬赏*

我在这个问题上加了悬赏,因为我仍然很好奇。我在我的项目中解决了这个问题,只是放弃了小部件并显示了一个指向wp登录页面的链接。但是,能够在不安全的页面上嵌入安全的登录表单将是一个更好的解决方案。我将把奖金奖励给任何能够显示能够实现这一目标的代码的人,或者给我指出一个已经实现了这一目标的插件。

5 个回复
SO网友:dgw

有很多方法可以做到这一点;this way, 例如。我的猜测是,使用Ajax登录并没有使用那篇文章中描述的所有技术,一些浏览器安全功能正在阻止它。尝试与开发人员联系,并提出改进建议,同时提供指向该文章的指针。

SO网友:Denis de Bernardy

我还没有看过这个插件,但我猜在Ajax请求中不使用https很难对登录URL进行编码。wp登录表单在其非https版本中运行良好,并且表单操作设置为使用https,所以我真的不明白Ajax为什么不工作。

如果无法更改插件,您可以尝试以下方法:

一个是wp\\u页脚挂钩上的jquery功能。搜索登录表单的ID并更改其URL,例如:$(ID).attr(\'action\', newValue);

(虽然我还不到100岁,但这还是行得通的,因为我隐约记得jquery在更改表单的方法或操作时会在表单标签上咳嗽。)

第二种方法是,如果URL出现在登录表单的HTML中,但没有出现在其Ajax调用中,那么可以在上启动输出缓冲区wp_head, 和str_replace() URL。

第三种方法是,如果实际url作为参数出现在js脚本中,则在wp\\u footer中重写它的值,就像在wp中使用的图像url的自动thickbox插件中所做的那样。

最后一个选项是,如果脚本是杂乱无章的意大利面代码,并且在函数调用中硬编码了登录URL,则使用wp_dequeue_script(), 并将您自己的版本排队以替换它。如果这样做,请注意优先事项:您的wp_print_scripts 显然,操作应该发生在插件的操作之后。

SO网友:bueltge

WordPress dieffrence用于hhtp和https,当您使用默认的WP函数调用AJAX时,AJAX regsition表单是可能的。您可能会看到本教程中的插件表单:http://www.wpajax.com/code/ 我认为这是你的解决方案。

SO网友:Tobias Beuving

我也遇到过类似的问题,结果都取决于函数wp_signon( $credentials, $secure_cookie ) 已调用。

我希望我的站点上的所有内容在登录后都是https,因此可以使用非安全cookie。

在ssl之前的代码中是:wp\\u signon($凭据,false)

所以我改变了:

wp_signon( $credentials, false )

wp_signon( $credentials, true )
这样就创建了一个安全的cookie,现在一切都好了。

我可以想象插件开发人员试图依赖FORCE_SSL_ADMIN 要设置安全cookie,请尝试使用wp_signon( $credentials, false ) 就你而言。我希望它能解决这个问题。

SO网友:Kristof De Buysere

我在使用AJAX插件时遇到了类似的问题。

在建议之后https://stackoverflow.com/questions/6301076/wordpress-single-page-ssl , 将此添加到wp配置中。php文件:

if( !empty($_SERVER[\'HTTPS\']) ) {
define( \'WP_SITEURL\', \'https://yourdomain.com\' );
define( \'WP_HOME\', \'https://yourdomain.com\' );
}
然后,我强制特定页面(使用AJAX的东西)仅为https://only(有用于此的插件)。

结束

相关推荐

WP-ADMIN似乎正在重定向

我的w-admin登录有一个奇怪的问题。这是从我升级到3.0以后才开始的,当我转到wp admin时,登录表单显示正常,但当我输入用户名并通过时,每次都会再次显示登录表单。使用密码恢复功能会导致电子邮件未找到错误。我知道用户名密码和电子邮件是正确的,b/c我可以访问mysql数据库,我可以看到值(至少用户名和电子邮件) 有人知道会出什么问题吗