ECShop和Discuz X2的集成

电脑杂谈  发布时间:2020-03-26 08:10:17  来源:网络整理

ucenter整合ecshop_ecshop中ucenter安装_ucenter ecshop通信失败

这几天将ECShop与Discuz X2集成在一起,我发现Discuz X2中存在一个简单但严重的错误ucenter整合ecshop,该错误导致了单点登录失败. 本文使用ECShop 2.7.2,Discuz X2.

为了模拟真实环境,特别设置了内部DNS: *. fcy.cn,ECShop使用mall.fcy.cn的域名,而Discuz使用该域名.

Discuz X2的安装和ECShop的安装均符合官方方法. 安装完成后,它们可以正常工作. 使用Discuz X2随附的UCenter 1.6.0,不再单独安装.

ECShop用户集成: 将discuz的uc_client目录复制到ecshop根目录,进入ecshop管理后台,并执行成员集成. 输入UCenter访问地址: 请注意,结尾没有'/'. 成功集成后,进入discuz的ucenter管理背景,您可以看到ecshop应用程序已成功集成,表明通信已成功. 还有一个用于discuz的应用程序. ecshop和discuz都是ucenter的访问应用程序. 但是,这里存在一个问题,即Discuz X2中的错误. ECShop应用程序的主要URL为: . 请注意,它后面还有一个额外的“ /”. 如果不删除它ucenter整合ecshop,将导致单点登录失败. 换句话说,要检查每个应用程序的主URL,它的末尾不得包含“ /”. 至此,单点登录的配置成功完成,并且可以在任何子应用程序中完成单点登录和注销.

原理:

一个,用户关系

1,UCenter用户表:

ucenter整合ecshop_ucenter ecshop通信失败_ecshop中ucenter安装

ucenter_members,所有用户表,包括管理员用户. 所有子系统的注册用户都将加入此表.

ucenter_mergemembers,由访问系统导入的用户,例如从ECShop导入的用户.

ucenter_admins,UCenter管理员用户,与非独立用户表ucenter_members关联.

2,Discuz用户表:

common_member,论坛系统的用户. 从UCenter登录用户,激活后将在此表中生成用户数据.

3,ECShop用户表:

用户,ECShop系统的用户. UCenter中的用户登录并直接在此表中生成用户数据.

ecshop中ucenter安装_ucenter ecshop通信失败_ucenter整合ecshop

第二次单次登录处理

参考文献,其中一些具有与本文使用的版本不同的特定文件名.

一些摘录,并进行了适当的修改:

1,用户登录到bbs,并使用uc_user_login函数在logging.php文件中进行验证. 如果验证成功,则将调用函数uc_user_synlogin(位于uc_client下的client.php文件中),并调用uc_api_post(“ user”,“ synlogin”,array('uid'=> $ uid));然后将数据传递给UC_API. / index.php'; UC_API是config / config_ucenter.php中定义的uc_server的URL.

2,uc_server的index.php接受参数数据,以用户身份获取模型,以synlogin的身份进行操作,在控制目录中的user.php类中调用onsynlogin方法,并以JavaScript方式通过foreach通知uc应用程序列表环. 应用程序在同一登录名中;也就是说,一些数据通过get传递到应用程序目录中api下的uc.php.

3,uc.php接收通知并处理通过get获得的数据,并使用_authcode(默认情况下,使用UC_KEY作为密钥)对函数synlogin(位于uc.php中)中的数据进行加密,并使用_setcookie函数设置cookie. 为了确保cookie能够成功写入并且不会被浏览器的安全性隐私设置拦截,使用了P3P协议.

4,每个应用程序使用适当文件中的相应密钥对上面设置的cookie进行解码,以获得诸如用户ID之类的数据;此值用于确定用户是否已通过另一个应用程序登录.

ecshop中ucenter安装_ucenter ecshop通信失败_ucenter整合ecshop

修改后的test.php(使用的用户ID为1)将作为单一登录应用程序进行测试.

<? php

include_once“ ./config/config_ucenter.php”;

include_once“ ./uc_client/client.php”;

回显uc_user_synlogin(1);

回声“

”;

var_dump($ _ COOKIE);

ucenter ecshop通信失败_ecshop中ucenter安装_ucenter整合ecshop

echo“ ”;

?>

<脚本类型=“文本/ javascript”>

var obj = document.getElementsByTagName(“ script”);

for(var i = 0; i

document.write(“ ” + obj [i] .src +“


”);

}


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-152738-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...