php的sso单点登录实现方法

本文实例讲述了php的sso单点登录实现方法。分享给大家供大家参考。具体分析如下:

这里详细讲到了几点:
1、点击登录跳转到SSO登录页面并带上当前应用的callback地址
2、登录成功后生成COOKIE并将COOKIE传给callback地址
3、callback地址接收SSO的COOKIE并设置在当前域下再跳回到应用1即完成登录
4、再在应用程序需要登录的地方嵌入一个iframe用来实时检测登录状态,代码如下:
index.php 应用程序页面:

复制代码代码如下:
<?php  
header('Content-Type:text/html; charset=utf-8');  
$sso_address = 'http://XXXX.com/sso/login.php'; //你SSO所在的域名  
$callback_address = 'http://'.$_SERVER['HTTP_HOST']  
                    .str_replace('index.php','',$_SERVER['SCRIPT_NAME'])  
                    .'callback.php'; //callback地址用于回调设置cookie 
 
if(isset($_COOKIE['sign'])){  
    exit("欢迎您{$_COOKIE['sign']} <a href="login.php?logout">退出</a>");  
}else{  
    echo '您还未登录 <a href="'.$sso_address.'?callback='.$callback_address.'">点此登录</a>';  
}  
?> 
<iframe src="<?php echo $sso_address ?>?callback=<?php echo $callback_address ?>" frameborder="0"  width="0" height="0"></iframe>

login.php SSO登录页面:
复制代码代码如下:
<?php  
header('Content-Type:text/html; charset=utf-8');  
if(isset($_GET['logout'])){  
    setcookie('sign','',-300);  
    unset($_GET['logout']);  
    header('location:index.php');  

 
if(isset($_POST['username']) && isset($_POST['password'])){  
    setcookie('sign',$_POST['username'],0,'');  
    header("location:".$_POST['callback']."?sign={$_POST['username']}");  

 
if(emptyempty($_COOKIE['sign'])){  
?> 
 
<form method="post">  
<p>用户名:<input type="text" name="username" /></p>  
<p>密  码:<input type="password" name="password" /></p>  
<input type="hidden" name="callback" value="<?php echo $_GET['callback']; ?>" />  
<input type="submit" value="登录" />  
</form> 
 
 
<?php  
}else{  
    $query = http_build_query($_COOKIE);  
    echo "系统检测到您已登录 {$_COOKIE['sign']} <a href="{$_GET['callback']}?{$query}">授权</a> <a href="?logout">退出</a>";  
}  
?>

callback.php 回调页面用来设置跨域COOKIE:
复制代码代码如下:
<?php  
header('Content-Type:text/html; charset=utf-8');  
if(emptyempty($_GET)){  
    exit('您还未登录');  
}else{  
    foreach($_GET as $key=>$val){  
        setcookie($key,$val,0,'');  
    }  
    header("location:index.php");  

?>

connect.php 用来检测登录状态的页面,内嵌在页面的iframe中:
复制代码代码如下:
<?php
header('Content-Type:text/html; charset=utf-8');  
if(isset($_COOKIE['sign'])){  
    $callback = urldecode($_GET['callback']);unset($_GET['callback']);  
    $query = http_build_query($_COOKIE);  
    $callback = $callback."?{$query}";  
}else{
    exit;  
}  
?> 
<html><script type="text/javascript">top.location.href="<?php echo $callback; ?>";</script></html>

希望本文所述对大家的php程序设计有所帮助。

转载于:https://my.oschina.net/u/1266171/blog/662428

BambuStudio学习笔记:GCode 类 关键成员解析 核心配置组件 状态跟踪系统 功能模块集成 核心方法剖析 主输出管道 实现多阶段处理: 分层处理流程: 实现智能路径规划: 关键特性: 实现模板故障检测: 采用三级流水线: 支持扩展类型: 实现多通道输出: 采用: 实现: 支持: 支持模块化编译: 典型流程: 实现功能: 阅读详情

相关推荐

成功解决使用jupyter notebook命令打开原先存的.ipynb文件突然消失的问题

成功解决使用jupyter notebook命令打开原先存的.ipynb文件突然消失的问题 目录 解决问题 解决思路 解决方法 T1、修改默认配置 T2、修改后缀参数(此方法是其他网友推荐,博主没有尝试) T3、如果以上还不成功,这个时候很可能是环境配置有问题 解决问题 使用jupyter notebook命令打开原先存的.ipynb文件突然消失的问题 解决思路 使用jupyter notebook命令打开原先存的.ipynb文件突然消失,说明...

头部AI社区如有邀博主AI主题演讲请私信—心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,专注,谦虚,自律,反思,成长,还算比较正能量的博主,公益免费传播…内心特别想在AI界做出一些可以推进历史进程影响力的技术(兴趣使然,有点小情怀,也有点使命感呀 5073

sso实现php,phpsso单点登录实现方法phpsso单点登录_PHP教程

phpsso单点登录实现方法phpsso单点登录本文实例讲述了phpsso单点登录实现方法。分享给大家供大家参考。具体分析如下:这里详细讲到了几点:1、点击登录跳转到SSO登录页面并带上当前应用的callback地址2、登录成功后生成COOKIE并将COOKIE传给callback地址3、callback地址接收SSO的COOKIE并设置在当前域下再跳回到应用1即完成登录4、再在应用程序需要...

weixin_39897505的博客 946

基于MATLAB的输电线路故障仿真分析.docx

.

SSO 单点登录 ,你用PHP是如何去做的呢 ?

SSO 单点登录

心学的博客 678

sso php 实现,PHP单点登录SSO实现方法

SSO单点登录,是一种控制多个相关但彼此独立的系统的访问权限, 拥有这一权限的用户可以使用单一的ID和密码访问某个或多个系统从而避免使用不同的用户名或密码,或者通过某种配置无缝地登录每个系统 。对于大型系统来说使用单点登录可以减少用户很多的麻烦。就拿百度来说吧,百度下面有很多的子系统——百度经验、百度知道、百度文库等等,如果我们使用这些系统的时候,每一个系统都需要我们输入用户名和密码登录一次的话...

weixin_30213477的博客 688

单点登陆关于php的几种实现方式

1.SSO单点登陆介绍 ​ SSO英文全称Single Sign On,单点登录SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。它是目前比较流行的企业业务整合的解决方案之一。 sso主要分为: 1.同域 SSO(多应用同一个域名) 2.同父域SSO (多应用主域名一致) 3.跨域SSO (...

skycodes_zyy的博客 2942

PHP 单点登录SSO实现方式详解

SSO( Single Sign On ),即单点登录,是一种控制多个相关但彼此独立的系统的访问权限, 拥有这一权限的用户可以使用单一的ID和密码访问某个或多个系统从而避免使用不同的用户名或密码,或者通过某种配置无缝地登录每个系统 。 对于大型系统来说使用单点登录可以减少用户很多的麻烦。就拿百度来说吧,百度下面有很多的子系统——百度经验、百度知道、百度文库等等,如果我们使用这些系统的时候,每一个...

郎涯技术 1万+

PHP单点登录SSO实现方法

PHP单点登录SSO实现方法 参考 1 SSO英文全称Single Sign On,单点登录SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。它是目前比较流行的企业业务整合的解决方案之一。 还不知道的小伙伴们自行补脑 - > 戳这里 同一个域但不同的子域如何进行单点登录 我们现在 有 2 个子...

freedom_fd的博客 628

thinkphp限制单点用户登录_phpsso单点登录实现方法

本文实例讲述了phpsso单点登录实现方法。分享给大家供大家参考。具体分析如下:这里详细讲到了几点:1、点击登录跳转到SSO登录页面并带上当前应用的callback地址2、登录成功后生成COOKIE并将COOKIE传给callback地址3、callback地址接收SSO的COOKIE并设置在当前域下再跳回到应用1即完成登录4、再在应用程序需要登录的地方嵌入一个iframe用来实时检测登录状态,...

weixin_39923110的博客 787

sso php 实现,phpsso单点登录实现方法,代码实例!

1.项目A:a.首页登录页面index.php(是你当前项目首页)header('Content-Type:text/html; charset=utf-8');$sso_address = 'http://www.sso.com/login.php'; //你SSO所在的域名,不是当前项目地址$callback_address = 'http://'.$_SERVER['HTTP_HOST']....

weixin_39838328的博客 155

PHP单点登录ticket代码,SSO单点登录PHP实现方法

摘要:Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。它可以让你从面条一样杂乱的代码中解脱出来;它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁、富于表达力。简单说一下我的逻辑,我也不知道我理解sso对不对。假如三个站点 a.baidu.com b.baidu.com c.baidu.coma.baidu.com 作为验证用户登录账户。b和c...

weixin_39915694的博客 262

sso php 实现,SSO单点登录PHP实现方法(Laravel框架)

Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。它可以让你从面条一样杂乱的代码中解脱出来;它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁、富于表达力。简单说一下我的逻辑,我也不知道我理解sso对不对。假如三个站点 a.baidu.com b.baidu.com c.baidu.coma.baidu.com 作为验证用户登录账户。b和c作为客...

weixin_39994949的博客 427

phpsso单点登录实现方法,代码实例!

1.首页登录页面index.php(是你当前项目首页) <?php header('Content-Type:text/html; charset=utf-8'); $sso_address = 'http://www.mysso.com/sso/login.php'; //你SSO所在的域名,不是当前项目地址 $callback_address = 'ht...

denglangli8323的博客 239

shiro单点登录原理_SSO单点登录三种情况的实现方式详解

单点登录(SSO——Single Sign On)对于我们来说已经不陌生了。对于大型系统来说使用单点登录可以减少用户很多的麻烦。就拿百度来说吧,百度下面有很多的子系统——百度经验、百度知道、百度文库等等,如果我们使用这些系统的时候,每一个系统都需要我们输入用户名和密码登录一次的话,我相信用户体验肯定会直线下降。当然,对于个人博客这类系统来说根本就用不上单点登录了。假如,我们的系统很庞大,但是就是这...

weixin_39914049的博客 896

sso单点登录PHP实现

单点登录(Single Sign On ),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应 用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次 主要的登录映射到其他应用中用于同一个用户的登录的机制。  当用户第一次访 问应用系统1的时候,因为还没有登录,会被引导到认证系统中进行登录;根据用户提供的 登录信息,认证系统进行身份效验,如

兔子尾巴的学习笔记 1547

PHP 使用TP5.0 实现SSO单点登录教程

PHP 使用TP5.0 实现SSO单点登录教程 【下载地址】PHP使用TP5.0实现SSO单点登录教程 本项目是一个基于PHP语言,使用ThinkPHP5.0框架实现SSO单点登录教程,专为解决跨多个域名的单点登录需求而设计。通过清晰的代码结构和详细的配置步骤,开发者可以快速上手并实现功能。项目不仅提供了完整的部署指南...

gitblog_06717的博客 333
上一篇: Guarded Suspension
下一篇: 书评 —— 《Go语言编程》
weixin_34067049
博客等级 码龄11年 5275粉丝 159原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值