discuzX3.4 自动同步其他网站的登录状态
1.确定用户规则,本次需求是从A网站验证登录状态后,使用discuzX的站点B自动完成登录,B不允许自己登录,不允许游客查看。A为公司ERP,B为独立discuz。
2.当A登录验证成功后,去验证B是否有此用户,没有的话新建此用户,有的话直接调用登录接口进行登录
3.discuz设置特殊邮箱结尾才能注册,防止注册机,邮箱统一为公司后缀
4.修改\upload\data\template\1_1_member_login.tpl.php,将登录的table注释掉,换成提示去指定登录页登录
5.制作代理php,登录discuz最重要的就是 xxxx_2132_auth 、xxxx_2132_saltkey两个值,我是通过请求 /member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1" 发送一个指定的xxxx_2132_saltkey 来进行登录的
6.修改\upload\data\template\1_1_member_login.tpl.php,将登录的table注释掉,换成提示去指定登录页登录,在第一行添加<?php setcookie('BjlB_2132_saltkey','xxxxxxxx'); //强制使用固定saltkey?>
7.在登录代理上进行
setcookie('BjlB_2132_saltkey','H7tkTLTd');
foreach ($http_response_header as $hdr) {
header("Content-Type: text/plain;\r\n");
header($hdr,false);}
将从discuz获取的登录后header(包括 xxxx_2132_auth 、xxxx_2132_saltkey两个cookie)直接response给本地,使得本地成为登录后状态。