public function initCasLogin(){ //忽略ajax请求 if((isset($_SERVER[‘HTTP_X_REQUESTED_WITH’]) && ($_SERVER[‘HTTP_X_REQUESTED_WITH’] == ‘XMLHttpRequest’))){ return; } /** * 判断是否已经从中央账户系统登录,或者退出登录 *如果已经登录,检查是否已经在session保存mid和siteKey *没有则保存 *如果未登录,删除缓存中的mid和siteKey */ //if(phpCAS::checkAuthentication()){//是否在中央系统登录 if(phpCAS::checkAuthentication()){//是否在中央系统登录 if (isset($_REQUEST[‘logout’])) {//失去本句,单点登出失效。 if(intval($_SESSION[‘mid’]) > 0){//本地已登录则退出登录 Model(“Passport”)->logoutLocal(); } phpCAS::logoutWithRedirectService(“http://”.$_SERVER [‘HTTP_HOST’].’/’); return; } //已登录 //echo var_dump(phpCAS); //获取完整用户名 $casid = phpCAS::getUser(); //判断CAS登录用户和本机的是否一致 if($casid!=$_SESSION[‘casid’] || intval($_SESSION[‘mid’])<=0){ $_SESSION[‘casid’] = $casid; //防止重复登录 $sql = “select uid from ts_user_cas where cas_id = ’”.$casid.”’”; $info = model()->query($sql); $userinfo = phpCAS::getAttributes(); if(count($info)>0){//有这个用户 $uid = $info[0][uid]; //直接登录 Model(“Passport”)->noPasswordLogin($uid,TRUE); }else{//没有这个用户 要做注册用户处理 并通知CAS 获取其所有信息。 //获取完整用户信息 $userinfo = phpCAS::getAttributes(); $map = $userinfo; if(empty($map[‘uname’])){ $map[‘uname’] = $map[‘email’]; } if(empty($map[‘uname’])){ $map[‘uname’] = “手机用户”.substr(‘abcd’.$map[‘phone’],-4); } $map[‘login_salt’] = ”; $map[‘password’] = ‘RegByCas’; $map[‘reg_ip’] = get_client_ip(0,TRUE); $map[‘ctime’] = time(); // 审核状态: 0-需要审核;1-通过审核 $map[‘is_audit’] = 1; // 需求添加 - 若后台没有填写邮件配置,将直接过滤掉激活操作 $map[‘is_active’] = 1; $map[‘first_letter’] = getFirstLetter($map[‘uname’]); $map[‘search_key’] = $map[‘uname’]; $map[‘is_del’] = 0; $map[‘is_init’] = 1; $map = array_diff_key($map,array(‘uid’=>null)); if(!empty($map[‘email’])){ $uid = Model(‘User’)->where(“email=’${map[‘email’]}’”)->getField(“uid”); } if(!$uid && !empty($map[‘phone’])){ $uid = Model(‘User’)->where(“phone=’${map[‘phone’]}’”)->getField(“uid”); } if (!$uid ){//用户不存在 $uid = Model(‘User’)->add($map); } if ($uid){ $casMap = array(); $casMap[‘uid’] = $uid; $casMap[‘cas_id’] = $casid; m(‘user_cas’)->add($casMap); // 添加梦想币 model(‘Credit’)->setUserCredit($uid, ‘init_default’); // 添加至默认的用户组 $userGroup = model(‘Xdata’)->get(‘admin_Config:register’); $userGroup = empty($userGroup[‘default_user_group’]) ? C(‘DEFAULT_GROUP_ID’) : $userGroup[‘default_user_group’]; model(‘UserGroupLink’)->domoveUsergroup($uid, implode(‘,’, $userGroup)); Model(“Passport”)>noPasswordLogin($uid,TRUE); //调用同步CAS信息接口 $appid = “Mgl7CcNQ2EzQEIjK4QGFAVvMolbodPj9”; $secure = “pRXOadwG9OjYxWeaH7AcG3AVptmEoG2P”; $timestamp = strtotime(“now”).‘000’; $body = “{‘uid’:’${casid}’}”; $signature = md5($secure.$timestamp.$body); $s = CAS_SERVER; $url = “https://${s}/account/restful/synDreamData?”. http_build_query(array( “appid” => $appid, “timestamp” => $timestamp, “body” => $body, “signature” => $signature )); file_get_contents($url); }else{ echo(“同步用户失败,请联系客服/系统管理员。”.Model()->getError()); exit; } } } }else{ //未登录 if(intval($_SESSION[‘mid’]) > 0){//本地已登录则退出登录 Model(“Passport”)->logoutLocal(); } }

txt文档 initcas

产品·运营·综合 > 运营 > 产品运营 > 文档预览
3 页 2 下载 827 浏览 0 评论 0 收藏 3.0分
温馨提示:如果当前文档出现乱码或未能正常浏览,请先下载原文档进行浏览。
initcas 第 1 页 initcas 第 2 页 initcas 第 3 页
本文档由 hx2019-04-10 10:51:34上传分享
给文档打分
您好可以输入 255 个字符
文库之家的网址是?( 答案:wenkuzhijia.cn )
评论列表
  • 暂时还没有评论,期待您的金玉良言