php透过统一发放tickets实现单点登陆SSO功能
php通过统一发放tickets实现单点登陆SSO功能
站点a,站点b,站点c,分别跨域,站点b当做统一认证中心,站点a,站点c登录请求转发到站点b,站点b当做统一登录,注册中心,也称第三方身份认证中心;用户从不同站点登录到第三方认证中心,完成登录验证后,会生成一个包含用户登录信息的加密key,并且生成多个不同子应用的带加密key的引导页面,用户可以自由选择进入子应用引导页,完成子页面认证,从而无需分别登录子应用的登陆入口了,看效果:
通过a站点登录,登录成功后进入第三方登录引导界面:
通过按钮,附加统一的key,进入a站引导中心
通过按钮,附加统一的key,进入c站引导中心
已经实现b站点代理登陆,实现a,c站点登陆了,只要b中心,添加多个子站点列表,就可以实现一个登录,注册中心,一个key实现所有子应用自动登陆,替代了传统子应用单独登陆的问题,简化了用户操作流程!
公共函数
<?phpfunction chksecret($secret){ $key=decode($secret); $arr = explode(",",$key); if(isset($arr[3]) && $arr[3]=="verifyok"){ $_SESSION['username']=$arr[1]; $_SESSION['login']=$arr[3]; }else{ $url=gethost(); echo "<script>alert('登陆失败!');window.location.href='".$url."';"; }}function gethost(){ return "http://".$_SERVER['HTTP_HOST'];}function chklogin(){ if(isset($_SESSION['login']) && $_SESSION['login']=='verifyok'){ }else{ $host=gethost(); header("location:$host"); }}function decode($string = '', $skey = 'lmj951753') { $strArr = str_split(str_replace(array('O0O0O', 'o000o', 'oo00o'), array('=', '+', '/'), $string), 2); $strCount = count($strArr); foreach (str_split($skey) as $key => $value) $key $value) $key
a站登录入口:
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>a站点</title> <h1 id="这是a站">这是a站</h1> <div> <form action="http://www.b.com/ssologin.php" method="post"> <p>用户名:<input type="text" name="username"></p> <p>密 码:<input type="text" name="password"></p> <p><input type="submit" name="'btn'" value="登陆"></p> </form> </div>
a站引导页:
<?phprequire_once ('function.php');session_start();$secret=isset($_GET['key'])?trim($_GET['key']):'';if($secret){ chksecret($secret);}else{ chklogin();}?> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>登陆引导中心</title> <p>欢迎回来!这里是A站点<?php echo $_SESSION['username'] ?></p> <p><a href="'http://www.a.com/admin.php'">管理中心 </a> <a href="'http://www.a.com/logout.php'">退出</a> </p>
sso登陆中心:
<?phpheader ("Content-type:text/html;charset=utf-8");$refer=$_SERVER['HTTP_REFERER'];$username=isset($_POST['username'])?trim($_POST['username']):'';$password=isset($_POST['password'])?trim($_POST['password']):'';if(empty($username) || empty($password)){ goback($refer);}$application=array(//根据子站点需要,添加应用列表 array('name'=>'进入A应用','url'=>'http://www.a.com/'), array('name'=>'进入C应用','url'=>'http://www.c.com/'));if($username=="admin" && $password=="123456"){ $str=time().','.$username.",".$password.",verifyok,".$refer; $key=encode($str); echo "登陆成功!".$username.'<br>'; foreach ($application as $k => $v) { if($refer==$v['url']){ echo "<a target="'_blank'" style="'color:red;font-weight:bold'" href="'%22.%24v%5B'url'%5D.%22home.php?key=%24key'">".$v['name']."</a> "; }else{ echo "<a target="'_blank'" href="'%22.%24v%5B'url'%5D.%22home.php?key=%24key'">".$v['name']."</a> "; } }}else{ echo "<script>alert('登陆失败!');history.go(-1);</script>"; exit();}function goback($refer){ header("Location:$refer"); exit();}function decode($string = '', $skey = 'lmj951753') { $strArr = str_split(str_replace(array('O0O0O', 'o000o', 'oo00o'), array('=', '+', '/'), $string), 2); $strCount = count($strArr); foreach (str_split($skey) as $key => $value) $key $value) $key
c站作为子站点和a站逻辑结构差不多,就不列举了,一个简单的基于php实现的sso登陆认证就完成了

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

許多用戶在選擇智慧型手錶的時候都會選擇的華為的品牌,其中華為GT3pro和GT4都是非常熱門的選擇,不少用戶都很好奇華為GT3pro和GT4有什麼區別,下面就給大家介紹一下二者。華為GT3pro和GT4有什麼差別一、外觀GT4:46mm和41mm,材質是玻璃鏡板+不鏽鋼機身+高分纖維後殼。 GT3pro:46.6mm和42.9mm,材質是藍寶石玻璃鏡+鈦金屬機身/陶瓷機身+陶瓷後殼二、健康GT4:採用最新的華為Truseen5.5+演算法,結果會更加的精準。 GT3pro:多了ECG心電圖和血管及安

為什麼截圖工具在Windows11上不起作用了解問題的根本原因有助於找到正確的解決方案。以下是截圖工具可能無法正常工作的主要原因:對焦助手已開啟:這可以防止截圖工具開啟。應用程式損壞:如果截圖工具在啟動時崩潰,則可能已損壞。過時的圖形驅動程式:不相容的驅動程式可能會幹擾截圖工具。來自其他應用程式的干擾:其他正在運行的應用程式可能與截圖工具衝突。憑證已過期:升級過程中的錯誤可能會導致此issu簡單的解決方案這些適合大多數用戶,不需要任何特殊的技術知識。 1.更新視窗與Microsoft應用程式商店應用程

第1部分:初始故障排除步驟檢查蘋果的系統狀態:在深入研究複雜的解決方案之前,讓我們先從基礎知識開始。問題可能不在於您的設備;蘋果的伺服器可能會關閉。造訪Apple的系統狀態頁面,查看AppStore是否正常運作。如果有問題,您所能做的就是等待Apple修復它。檢查您的網路連接:確保您擁有穩定的網路連接,因為「無法連接到AppStore」問題有時可歸因於連接不良。嘗試在Wi-Fi和行動數據之間切換或重置網路設定(「常規」>「重置」>「重置網路設定」>設定)。更新您的iOS版本:

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

watch4pro和gt各自具有不使用的特點和適用場景,如果注重功能的全面性、高性能和時尚外觀,同時願意承擔較高的價格,那麼Watch 4 Pro可能更適合。如果對功能要求不高,更注重電池續航力和價格的合理性,那麼GT系列可能更適合。最終的選擇應根據個人需求、預算和喜好來決定,建議在購買前仔細考慮自己的需求,並參考各種產品的評測和比較,以做出更明智的選擇。

如何使用iPadOS17.4优化iPad电池寿命延长电池续航时间是移动设备体验的关键,iPad是一个很好的例子。如果您觉得iPad电池消耗速度过快,不用担心,在iPadOS17.4中有许多技巧和调整可以显著延长设备的运行时间。本深入指南的目标不仅仅是提供信息,而是改变您使用iPad的方式,增强您的整体电池管理,并确保您可以在无需充电的情况下更长时间地依赖您的设备。通过采用此处概述的做法,您朝着更高效、更谨慎地使用技术迈出了一步,这些技术是根据您的个人需求和使用模式量身定制的。识别主要的能量消耗者

请问如何修改url某一参数的参数值呢?是要拆开了再拼回去吗?那么请问如何修改url某一参数的参数值呢?是要拆开了再拼回去吗?http://127.0.0.1/myo/newuser.php?mod=search&type=fastone比如现在我要修改mod=new要怎么做呢?------解决方案--------------------发送了请求

每個人都在期待今天的Windows1123H2發布。事實上,Microsoft剛剛啟動了發布預覽版的更新,這是正式發布階段之前最接近的頻道。被稱為Build22631的Microsoft表示,他們正在推出新的更名聊天應用程序,電話鏈接和一起玩小部件,這些小部件在過去幾個月中已在其他內部渠道中進行了測試。 「這個新的更新將具有與Windows11版本22H2相同的服務分支和程式碼庫,並將與所有新宣布的功能累積,包括Windows中的Copilot(預覽版),」Microsoft承諾。雷德蒙官員進一
