Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在主域上的Wordpress站点和子域上的非Wordpress站点之间进行SSO的最简单方法是什么_Php_Wordpress_Session_Single Sign On_Credentials - Fatal编程技术网

Php 在主域上的Wordpress站点和子域上的非Wordpress站点之间进行SSO的最简单方法是什么

Php 在主域上的Wordpress站点和子域上的非Wordpress站点之间进行SSO的最简单方法是什么,php,wordpress,session,single-sign-on,credentials,Php,Wordpress,Session,Single Sign On,Credentials,我有一个网站www.mydomain.com,它是Wordpress网站,我在www.panel.mydomain.com上安装了另一个PHP脚本,而不是Wordpress 我在同一台主机上为Wordpress和PHP脚本创建了一个数据库 子域上的PHP脚本是一个完全独立的网站,可以独立运行 在我的Wordpress网站上,我与Woocommerce一起销售不同的软件包,在购买了一些软件包之后,Wordpress上当前用户的凭证和信息在我的其他PHP脚本的用户表上得到了复制 我可以毫无问题地走到

我有一个网站www.mydomain.com,它是Wordpress网站,我在www.panel.mydomain.com上安装了另一个PHP脚本,而不是Wordpress

我在同一台主机上为Wordpress和PHP脚本创建了一个数据库

子域上的PHP脚本是一个完全独立的网站,可以独立运行

在我的Wordpress网站上,我与Woocommerce一起销售不同的软件包,在购买了一些软件包之后,Wordpress上当前用户的凭证和信息在我的其他PHP脚本的用户表上得到了复制

我可以毫无问题地走到这个阶段 以下是我无法解决的问题:

我希望我的用户根本看不到我的PHP脚本在子域上的登录页面,如果wordpress上的用户已登录,子域将自动登录,如果用户已注销 子域上的URL都不可访问并重定向到www.mydomain.com/login或任何登录页面

因此,基本上删除了第二个脚本登录步骤 我对php有点陌生

请给我一些提示或资源 经过几天的搜寻,我真的没有任何线索
谢谢

简短的回答是,您向用户发送一个安全令牌cookie,然后用户必须使用该cookie才能在您的其他系统上证明其身份

当您登录WordPress时,您需要制作一个插件,生成一个随机字符串,发送到用户的浏览器,并将其保存在PHP站点上的用户帐户中。然后,当用户访问您的PHP站点时,它会在登录页面请求一个cookie。如果用户能够提供cookie,PHP站点将查找它,并使用cookie代替用户名和密码登录


有很多方法可以强化此方法的安全性,以防止令牌被盗,但对于大多数用例,只要通过HTTPS传输它并确保它足够长/复杂就足够了。

因此,我正确地理解,首先我应该在php脚本的用户表上添加一列作为令牌,每次登录wordpress时,我都会生成一个代码并将其写入该用户表,然后当我在我的子域上输入每个地址时,如www.panel.mydomain/xxx我检查令牌是否存在,如果存在,我为该用户启动会话??主要问题是,当有人输入此地址www.panel.mydomain.com/xxx时,我如何检查应该检查哪个用户的令牌?其次,如果用户出于任何原因在浏览器上删除其历史记录、cookie,表上仍然有令牌!!第三个问题是,这是最简单的方法吗?我找到了一些答案,关于JWT Jason Web Tokens的文章,正如你提到的,这是一个安全字符串,你有任何关于它的深入例子吗?www.panel.mydomain/xxx,您可能已经有了一个安全脚本,该脚本通过每个页面的include或require调用。在正常登录情况下,它会查找一个会话变量,以查看您是否已登录以及您的权限级别,并将您重定向到登录或403页面。如果您未登录,您只需添加一个条件以同时查找有效令牌,这样您就不必手动将其添加到每个页面,因为令牌仍然存在,令牌通常有一个过期时间,您可以在用户数据库中使用单独的datetime列跟踪该过期时间。因此,当你检查代币时,你也要检查它是否是在过去24小时内制造的,或者你的限制是什么。此外,大多数浏览器在2周后清除cookie,因此即使令牌留在数据库中,浏览器也会在这么长时间后失去对它的跟踪。