为了账号安全,请及时绑定邮箱和手机立即绑定

PHP开发SSO单点登录系统时如何实现Seesion跨域共享

PHP开发SSO单点登录系统时如何实现Seesion跨域共享

PHP
ddawx123 2017-03-29 12:30:38
本人目前尝试把个人网站导航(www.dingstudio.cn)、个人的博客网站(blog.dingstudio.cn)、相册管理系统(album.dingstudio.cn)、心情语录发布站(w.dingstudio.cn)以及网页邮箱系统(mail.dingstudio.cn)都接入自己开发的SSO单点登录系统。SSO所在域名:passport.dingstudio.cn,上述域名均部署了https协议访问,目前各应用均无法检测到由passport系统产生的session,passport的登录认证模块和会话超时、会话续期系统已全部开发完毕。目前设计需求是SSO应用程序通过其他业务应用重定向时携带参数url,如login.php?url=http://www.dingstudio.cn/callback.php 处理登录成功后的跳转。callback.php为各个应用的回调接口,登录成功后的信息同步处理均交给callback.php。(URL参数读取、处理已经开发完毕并封装了一个类)部分passport核心代码:(这些代码都是写在一个php类里,前端入口通过require_once进行调用)public static function SSOCheckExist($special = '0') {     $nowtime = date('Ymdhis',time());     session_start();     if(isset($_SESSION['dingstudio_sso']) && $nowtime - $_SESSION['dingstudio_ssotoken'] <= 600) {         $_SESSION['dingstudio_ssotoken'] = $nowtime;//系统会话自动续期 return "authed";//存在合法会话且处于时效期限内,返回自动登陆     }     else { return "noauth";//不存在合法会话或有效密钥超时,返回请求登陆     } } public static function SSOCheck($username, $password) {     if(isset($username) and isset($password)) {         $sqlconn = MySQLInstance::getInstance()->connect();//通过单例方式建立MySQL数据库连接         if($sqlconn->connect_error) {     return "error-654";//返回数据库服务器宕机错误码         }         else {     $sqlcode = "select * from users where (username='$username') and (password='$password')";//查询数据库检测账户密码是否匹配     $result = $sqlconn->query($sqlcode);//执行上述SQL语句     if($result->num_rows > 0) {//登陆成功后         $dtoken = date('Ymdhis',time());//产生SSO令牌码(使用时间)         $_SESSION['dingstudio_sso'] = $username;//同步用户名到Session         $_SESSION['dingstudio_ssotoken'] = $dtoken;//同步SSO令牌码到Session         $sqlcode = "update users set usertoken='{$dtoken}' where username='$username'";//更新SSO令牌码到数据库         $result = $sqlconn->query($sqlcode);//执行上述SQL语句         return "authed";//返回认证成功     }     else {         return "noauth";//返回认证失败     }     MySQLInstance::getInstance()->disconnect();//关闭数据库连接         }     } }
查看完整描述

1 回答

  • 1 回答
  • 3 关注
  • 3830 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信