代码拉取完成,页面将自动刷新
同步操作将从 TuanZF/SSO 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
<?php
function getrandstr($length){
$str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890';
$randStr = str_shuffle($str);//打乱字符串
$rands= substr($randStr,0,$length);//substr(string,start,length);返回字符串的一部分
return $rands;
}
/*
示例C SSO
*/
class ClassC
{
/**
* 来源
* @var string
*/
protected $source_url;
/**
* 用户登录凭证
* @var string
*/
protected $userToken;
/**
* 用户昵称
* @var string
*/
protected $username;
/**
* redis
*/
protected $redis;
/**
* 构造 获取存在用户信息
*/
public function __construct($redis)
{
$this->redis = $redis;
$this->getCookie();
}
/**
* [getCookie description]
* @return [type] [description]
*/
protected function getCookie()
{
$this->userToken = isset($_COOKIE['USERTOKEN']) ? $_COOKIE['USERTOKEN'] : '';
$this->username = isset($_COOKIE['USERNAME']) ? $_COOKIE['USERNAME'] : '';
}
/**
* 路由
* @return
*/
public function index()
{
if (empty($_GET['a'])) {
exit('Empty Action');
}
$param = isset($_GET['c']) ? trim($_GET['c']) : '';
$this->source_url = isset($_GET['d']) ? trim($_GET['d']) : '';
$action = strtolower($_GET['a']);
$this->$action($param);
}
/**
* 登录页
* @param [type] $param [description]
* @return [type] [description]
*/
public function login($param)
{
if($this->userToken && $this->username) {
if(empty($param)) {
echo '<span>用户'.$this->username.',你已经别的系统登录过了!</span></br><button type="button"><a href="http://a.cn/?token='.$this->userToken.'">返回A系统</a></button><button type="button"><a href="http://b.cn/?token='.$this->userToken.'">返回B系统</a></button>';
exit;
}
} else {
if(empty($param)) {
echo '你没有登录,如何登陆http://c.cn/?a=login&c=您的用户名称,即成功登陆';
exit;
}
}
$token = getrandstr(8);
$username = $param;
setcookie('USERTOKEN', $token, time() + 3600);
setcookie('USERNAME', $username, time() + 3600);
$this->setRedis($token, $username);
echo '<span>用户'.$username.',登录成功!</span></br><button type="button"><a href="http://a.cn/?token='.$token.'">返回A系统</a></button><button type="button"><a href="http://b.cn/?token='.$token.'">返回B系统</a></button>';
}
/**
* [setRedis description]
* @param [type] $token [description]
* @param [type] $username [description]
*/
protected function setRedis($token, $username)
{
$data = [];
$data['token'] = $token;
$data['username'] = $username;
$this->redis->set($token, json_encode($data));
}
/**
* 鉴权
* @param [type] $param [description]
* @return [type] [description]
*/
protected function oauth($param)
{
$redisParam = $this->redis->get($param);
$oauth = (json_decode($redisParam)->token == $param) ? true : false;
if(!$oauth) {
$this->output('5001', '错误Token');
exit;
}
$data = [];
$data['token'] = $param;
$data['username'] = json_decode($redisParam)->username;
$this->output('200', 'ok', $data);
}
/**
* 返回格式
* @param integer $errNo [标识号]
* @param string $errMsg [返回内容]
* @param array $data [返回数据]
* @return [json]
*/
public function output($errNo = 200, $errMsg = 'ok', $data = array())
{
$res['errno'] = $errNo;
$res['errMsg'] = $errMsg;
$res['data'] = $data;
echo json_encode($res);
}
}
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->auth('199407');
$obj = new ClassC($redis);
$obj->index();
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。