您现在的位置是:首页 > cms教程 > Discuz教程Discuz教程
discuz的SSO单点,同歩,异步登录实现方法
吕聪2025-07-20Discuz教程已有人查阅
导读discuz(dz) SSO(单点,同歩,异步)登录1 )登录请求到 localhost/member.php 初始化一些设置,然后调用source/module/member/member_logging.php(37行)。
discuz(dz) SSO(单点,同歩,异步)登录
一般流程:
1 发起请求:
1 )登录请求到 localhost/member.php 初始化一些设置,然后调用source/module/member/member_logging.php(37行)。
2)在member_logging.php里实例化登录控制类(new logging_ctl 20行),并调用其 on_login() 方法,logging_ctl 类在class_member.php 文件里。
3) 进入source/class/class_member.php文件在logging_ctl类的on_login()方法里进行登录操作,具体为:在108行调用userlogin()方法完成本地登录。如一切正常($result ['status'] > 0)在149行调用setloginstatus()设置登录状态。
在走到153行
4)调用"uc_user_synlogin ()"方法,进入到uc_client/client.php文件,在"uc_user_synlogin ()"方法里又调用"uc_api_post()"方法(313行),最终是使用socket 方式的向 localhost/uc_server(即 UC_API)/index.php发起请求。
5) 在 uc_server/index.php 里获取到控制器名($m = getgpc('m');)及控制器的方法($a = getgpc('a');)
然后在实例化控制器并调用相关方法(62行),这里$m是user,$a是synlogin即为:
我们可以看到,这里只是循环输出了一段JS代码,加载JS源码的 src=""'.$app['url'].'/api/uc.php......." 属性即为应用的URL地址,而UC的用户同歩登录的API地址即为:localhost/api/uc.php,后面带两个参数 一是时间戳time,二是code其值是由用户名,用户ID等组成的URL参数字符串被加密后的结果。
2 响应请求:
进行一些认证处理后,在api/uc.php 文件第 196行synlogin()方法里设置登录成功认证标识,即:设置"auth" COOKIE。
二 简单模拟
1 说明:
假设我有两个子域:http://ssoa.ebingou.cn http://ssob.ebingou.cn
当我从ssoa 登录时,ssob 就同歩登录了。
2 过程
由于这里我只是简单模拟,所以代码相当粗糙。
ssoa_index.php:
一般流程:
1 发起请求:
1 )登录请求到 localhost/member.php 初始化一些设置,然后调用source/module/member/member_logging.php(37行)。
2)在member_logging.php里实例化登录控制类(new logging_ctl 20行),并调用其 on_login() 方法,logging_ctl 类在class_member.php 文件里。
3) 进入source/class/class_member.php文件在logging_ctl类的on_login()方法里进行登录操作,具体为:在108行调用userlogin()方法完成本地登录。如一切正常($result ['status'] > 0)在149行调用setloginstatus()设置登录状态。
在走到153行
$ucsynlogin = $this->setting ['allowsynlogin'] ? uc_user_synlogin ( $_G ['uid'] ) : ''
这句表明如果设置的单点登录,那么就进行其应用的登录认证,即调用“uc_user_synlogin() ”。4)调用"uc_user_synlogin ()"方法,进入到uc_client/client.php文件,在"uc_user_synlogin ()"方法里又调用"uc_api_post()"方法(313行),最终是使用socket 方式的向 localhost/uc_server(即 UC_API)/index.php发起请求。
5) 在 uc_server/index.php 里获取到控制器名($m = getgpc('m');)及控制器的方法($a = getgpc('a');)
然后在实例化控制器并调用相关方法(62行),这里$m是user,$a是synlogin即为:
$control = new usercontrol();
$control->onsynlogin();
6) 进入usercontrol() 类所在文件:uc_client/control/user.php 在33行即为应用例表单点登录的通知方法(onsynlogin)。我们可以看到,这里只是循环输出了一段JS代码,加载JS源码的 src=""'.$app['url'].'/api/uc.php......." 属性即为应用的URL地址,而UC的用户同歩登录的API地址即为:localhost/api/uc.php,后面带两个参数 一是时间戳time,二是code其值是由用户名,用户ID等组成的URL参数字符串被加密后的结果。
2 响应请求:
进行一些认证处理后,在api/uc.php 文件第 196行synlogin()方法里设置登录成功认证标识,即:设置"auth" COOKIE。
二 简单模拟
1 说明:
假设我有两个子域:http://ssoa.ebingou.cn http://ssob.ebingou.cn
当我从ssoa 登录时,ssob 就同歩登录了。
2 过程
由于这里我只是简单模拟,所以代码相当粗糙。
ssoa_index.php:
<?php
echo <<<HTML
<html>
<head>
<title>This is SSOA Page</title>
</head>
<p>
This is SSOA Page
</p>
</html>
HTML;
if(isset($_GET['a']) and $_GET['a']=='login')
{
//请求应用
echo <<<HTML
<p>Loing Success!!</p>
<script type="text/javascript" src="http://ssob.fc_lamp.com/index.php?a=login"></script>
HTML;
}
ssob_index.php:
<?php
if (isset ( $_GET ['a'] ) and $_GET ['a'] == 'login')
{
header ( 'P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"' );
setcookie ( 'myauth', 'test_success', time()+3600, '/' );
exit ( 1 );
}
echo <<<HTML
<html>
<head>
<title>This is SSOB Page</title>
</head>
<p>
This is SSOB Page
</p>
</html>
HTML;
//查看结果
if (isset ( $_COOKIE ['myauth'] ))
{
var_dump ( $_COOKIE ['myauth'] );
}
本文标签:
很赞哦! ()
相关教程
图文教程
discuz加密解密算法介绍
今天和大家分享一下discuz的加密和解密算法研究了一个星期了,总结了这个算法有三个特点1,动态性,同一字符串每次加密的密文都不一样2,时间性,可以自己加一个限期参数,以秒为单位
了解discuz,discuz环境搭建和部署
discuz是由comsenz出品的,一款使用php编写,以MySQL作为数据存储的社区建站产品,是由戴志康大学时期创始开发,2001年6月发布,如今已被200万网站用做社区建站系统
直接导入用户信息到discuz ucenter的方法
上一篇帖子: 直接导入帖子到Discuz 论坛数据库. 结束时说要写一篇导入用户的帖子, 一直没时间, 但是咱不能做太监,不是? 所以今天赶快补上. 在做discuz整合或者迁移是
Discuz代码研究编码规范介绍
Discuz中的编码规范很值得PHP开发人员借鉴。里面既介绍了编码时代码标记,注释,书写规则,命名原则等方面基础的内容,对代码的安全性,性能,兼容性,代码重用,数据库设计,数据库性能及优
相关源码
-
粉色家政月嫂保姆公司pbootcms网站模板(PC+WAP)为家政服务、月嫂保姆企业打造的营销型解决方案,基于PbootCMS内核开发,采用温馨粉色主题传递行业温度。PHP7.0+高性能架构支持SQLite/MySQL双数据库查看源码 -
(自适应响应式)HTML5电脑手机电子数码产品配件pbootcms模板下载本模板为电脑配件、手机配件及数码周边产品企业设计,基于PbootCMS内核开发。采用现代化响应式布局,适配各类移动设备,能够专业展示各类电子产品配件参数、应用场景和技术特点。模板内置多种产品展示模块,满足不同类型配件企业的展示需求。查看源码 -
(自适应多语言)WordPress开源主题MirageV资讯个人博客源码MirageV资讯类个人博客主题源码/WordPress主题/全开源MirageV 是一款开源的 WordPress 主题,支持自适应、暗黑模式、多语言等功能,查看源码 -
响应式粉色美容整形化妆品pbootcms网站模板开源源码该网站模板为美容整形、化妆品企业设计,采用响应式布局确保在手机、平板及PC端自动适配显示效果。基于PbootCMS内核开发,支持一键替换图文内容快速转换至其他行业应用。查看源码 -
自适应响应式绿色装修公司定制家居类pbootcms网站下载(自适应手机端)响应式全屋装修定制家居类网站pbootcms模板 绿色装修公司网站源码下载PbootCMS内核开发的网站模板,该模板适用于装修定制网站、装查看源码 -
(自适应响应式)高端网站建设设计公司互联网营销网站pbootcms模板本模板基于PbootCMS内核开发,为网站建设公司和互联网营销企业量身打造。采用响应式设计,适配各种移动设备,提供统一的后台管理体验查看源码
| 分享笔记 (共有 篇笔记) |
