| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- <?php
- /**
- * sso登录
- * 访问地址如:http://demo.rockoa.com/api.php?m=opensso
- */
- class openssoClassAction extends openapiAction
- {
-
- public function initAction()
- {
- $this->display= false;
- }
-
- public function indexAction()
- {
- $ssotoken = $this->get('ssotoken');
- $lurl = urldecode($this->get('backurl')); //登录成功跳转地址urlencode
- if(isempt($ssotoken))return '没有参数ssotoken';
-
- $checkurls = $this->get('checkurl');
- $checkurl = getconfig('sso_checkurl'); //验证地址
- $ssokey = getconfig('sso_key'); //验证key
- if($checkurls)$checkurl = c('rockwxqy')->geturlstr($checkurls,'','main');
-
- if(isempt($checkurl))return '没有配置验证地址';
- $jg = contain($checkurl,'?')?'&':'?';
-
- $url = $checkurl.$jg.'ssotoken='.$ssotoken.'&ssokey='.$ssokey.'';
- $user = c('curl')->getcurl($url); //要返回用户帐号/手机号
- if(isempt($user))return '验证失败没有返回值';
-
- //调用登录方法验证
- $lobj = m('login');
- $rand = md5(''.$this->rock->now.''.$user.'');
- $lobj->setloginrand($rand);
- $arr = $lobj->start($user, $rand, 'pc','SSO');
- if(!is_array($arr)){
- return $arr;
- }else{
- $uid = $arr['uid'];
- $name = $arr['name'];
- $user = $arr['user'];
- $token = $arr['token'];
- $lobj->setsession($uid, $name, $token, $user);
- if(isempt($lurl)){
- $lurl = 'index.php?m=index';
- if($this->rock->ismobile())$lurl='index.php?d=we';
- }
- $this->rock->location($lurl);//跳转
- return 'success';
- }
- }
- }
|