PHP编程 SSO详细介绍及简单实例
php  /  管理员 发布于 7年前   191
PHP SSO详解 SSO有三种模式:①跨子域单点登陆②完全跨单点域登陆③站群共享身份认证 第一种模式很简单,只需要将Cookie的域设置成多个应用的根域即可 第二种方式,也很简单,就是将所以应用的认证地址更换成同一个认证地址,每次查看是否在认证中心登陆,如果登陆了,给调用应用发放一个加密令牌即可 第三种跨域,就是来回跳转来回验证token略有麻烦 配置目录结构 在服务器根目录下,新建三个项目目录: |C/网站根目录/ 在根目录下新建functions.PHP脚本文件,具体内容如下: 在oa项目目录下,新建index.php和login.php两个脚本文件 编辑index.php文件 编辑login.php文件 在bbs项目目录下,新建index.php和login.php两个脚本文件 编辑index.php文件 编辑login.php文件 在blog项目目录下,新建index.php和login.php两个脚本文件 编辑index.php文件 编辑login.php文件 配置本地虚拟主机 具体配置步骤,我想大家应该都会了,不需要我一一赘述.你只需要按照我给的参照,配置和不同域名对应目录的映射即可. 域名 /项目目录/ 恭喜您,已经完成了一个简单的SSO系统 配置完成后,记得重启Web服务器.然后你只需要访问这三个不同的站点,即可实现一个站点登陆,其他站点不再发送登陆请求. 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
|C|C/oa/
|C|C/bbs/
|C|C/blog/
oa.taoip.cn站点登陆系统
* @since 2017/01/03 * @copyright copyright (c) 2017 zixue.it GPL * @license http://www.zixue.it/ */// BBS站点// (1)开启Session会话session_name('taoip');session_start();// (2)获取用户名和token进行校验$username = isset($_COOKIE['username']) ? $_COOKIE['username'] : '';$token = isset($_COOKIE['token']) ? $_COOKIE['token'] : '';$salt = 'taoip';$_token = md5($salt.$username);if ($token != $_token) { header('location: login.php'); exit();}echo "欢迎{$username}用户,访问BBS站点";?>
* @since 2017/01/03 * @copyright copyright (c) 2017 zixue.it GPL * @license http://www.zixue.it/ */// BBS站点登陆系统require '../functions.php';// (2)验证yzToken('taoip.cn');// (1)判断是否登陆,登陆则跳转首页,未登录则去其他站点获取token$url = isset($_GET['url']) ? $_GET['url'] : '';if (empty($url)) { getToken('http://dengpeng.cc/login.php?url=http://bbs.taoip.cn/login.php');}// (1)判断用户是否登陆$bool = isLogin();$url = isset($_GET['url']) ? $_GET['url'] : '';if ($bool) { if (empty($url)) { header('location: index.php'); } else { $username = isset($_COOKIE['username']) ? $_COOKIE['username'] : ''; $token = isset($_COOKIE['token']) ? $_COOKIE['token'] : ''; $lurl = $url.'?username='.$username.'&token='.$token; header('location: '.$lurl); }}if (!empty($_POST)) { $username = isset($_POST['username']) ? $_POST['username'] : ''; $password = isset($_POST['password']) ? $_POST['password'] : ''; // 从库中查询用户密码 @$link = mysql_connect('localhost', 'root', ''); mysql_query('use sso', $link); mysql_query('set names utf8', $link); $sql = "select * from users where username = '".$username."'"; $user = mysql_fetch_assoc(mysql_query($sql, $link)); // 校验 $salt = 'taoip'; $_password = md5($salt.$username); // var_dump($user['password'] == $_password); // print_r($user);exit(); if ($user['password'] == $_password) { // 校验成功,开始登陆 setcookie('username', $username, time()+3600, '/', 'taoip.cn'); setcookie('token', $_password, time()+3600, '/', 'taoip.cn'); // 如果URL没有值重定向到首页,否则重定向到URL页面 if (empty($url)) { header('location: index.php'); } else { header('location: '.$lurl); } }}?>
bbs.taoip.cn站点登陆系统
* @since 2017/01/03 * @copyright copyright (c) 2017 zixue.it GPL * @license http://www.zixue.it/ */// blog站点// (1)开启Session会话session_name('taoip');session_start();// (2)获取用户名和token进行校验$username = isset($_COOKIE['username']) ? $_COOKIE['username'] : '';$token = isset($_COOKIE['token']) ? $_COOKIE['token'] : '';$salt = 'taoip';$_token = md5($salt.$username);if ($token != $_token) { header('location: login.php'); exit();}echo "欢迎{$username}用户,访问blog站点";?> * @since 2017/01/03 * @copyright copyright (c) 2017 zixue.it GPL * @license http://www.zixue.it/ */// blog站点// (1)开启Session会话session_name('taoip');session_start();// (2)获取用户名和token进行校验$username = isset($_COOKIE['username']) ? $_COOKIE['username'] : '';$token = isset($_COOKIE['token']) ? $_COOKIE['token'] : '';$salt = 'taoip';$_token = md5($salt.$username);if ($token != $_token) { header('location: login.php'); exit();}echo "欢迎{$username}用户,访问blog站点";?>
* @since 2017/01/03 * @copyright copyright (c) 2017 zixue.it GPL * @license http://www.zixue.it/ */// blog站点登陆系统require '../functions.php';// (2)验证yzToken('dengpeng.cc');// (1)判断是否登陆,登陆则跳转首页,未登录则去其他站点获取token$url = isset($_GET['url']) ? $_GET['url'] : '';if (empty($url)) { getToken('http://oa.taoip.cn/login.php?url=http://dengpeng.cc/login.php');}// (1)判断用户是否登陆$bool = isLogin();$url = isset($_GET['url']) ? $_GET['url'] : '';if ($bool) { if (empty($url)) { header('location: index.php'); } else { $username = isset($_COOKIE['username']) ? $_COOKIE['username'] : ''; $token = isset($_COOKIE['token']) ? $_COOKIE['token'] : ''; $lurl = $url.'?username='.$username.'&token='.$token; header('location: '.$lurl); }}// (3)判断用户是否提交数据if (!empty($_POST)) { $username = isset($_POST['username']) ? $_POST['username'] : ''; $password = isset($_POST['password']) ? $_POST['password'] : ''; // 从库中查询用户密码 @$link = mysql_connect('localhost', 'root', ''); mysql_query('use sso', $link); mysql_query('set names utf8', $link); $sql = "select * from users where username = '".$username."'"; $user = mysql_fetch_assoc(mysql_query($sql, $link)); // 校验 $salt = 'taoip'; $_password = md5($salt.$username); // var_dump($user['password'] == $_password); // print_r($user);exit(); if ($user['password'] == $_password) { setCook($username, $_password, 'dengpeng.cc'); if (empty($url)) { header('location: index.php'); } else { header('location: '.$lurl); } }}?>
dengpeng.cc站点登陆系统
oa.taoip.cn /oa/
bbs.taoip.cn /bbs/
dengpeng.cc /blog/您可能感兴趣的文章:
上一条:
常用PHP封装分页工具类
下一条:
php 解决扫描二维码下载跳转问题
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号