openssoAction.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <?php
  2. /**
  3. * sso登录
  4. * 访问地址如:http://demo.rockoa.com/api.php?m=opensso
  5. */
  6. class openssoClassAction extends openapiAction
  7. {
  8. public function initAction()
  9. {
  10. $this->display= false;
  11. }
  12. public function indexAction()
  13. {
  14. $ssotoken = $this->get('ssotoken');
  15. $lurl = urldecode($this->get('backurl')); //登录成功跳转地址urlencode
  16. if(isempt($ssotoken))return '没有参数ssotoken';
  17. $checkurls = $this->get('checkurl');
  18. $checkurl = getconfig('sso_checkurl'); //验证地址
  19. $ssokey = getconfig('sso_key'); //验证key
  20. if($checkurls)$checkurl = c('rockwxqy')->geturlstr($checkurls,'','main');
  21. if(isempt($checkurl))return '没有配置验证地址';
  22. $jg = contain($checkurl,'?')?'&':'?';
  23. $url = $checkurl.$jg.'ssotoken='.$ssotoken.'&ssokey='.$ssokey.'';
  24. $user = c('curl')->getcurl($url); //要返回用户帐号/手机号
  25. if(isempt($user))return '验证失败没有返回值';
  26. //调用登录方法验证
  27. $lobj = m('login');
  28. $rand = md5(''.$this->rock->now.''.$user.'');
  29. $lobj->setloginrand($rand);
  30. $arr = $lobj->start($user, $rand, 'pc','SSO');
  31. if(!is_array($arr)){
  32. return $arr;
  33. }else{
  34. $uid = $arr['uid'];
  35. $name = $arr['name'];
  36. $user = $arr['user'];
  37. $token = $arr['token'];
  38. $lobj->setsession($uid, $name, $token, $user);
  39. if(isempt($lurl)){
  40. $lurl = 'index.php?m=index';
  41. if($this->rock->ismobile())$lurl='index.php?d=we';
  42. }
  43. $this->rock->location($lurl);//跳转
  44. return 'success';
  45. }
  46. }
  47. }
粤ICP备19079148号