1
0

openssoAction.php 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  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. $checkurl = getconfig('sso_checkurl'); //验证地址
  18. $ssokey = getconfig('sso_key'); //验证key
  19. if(isempt($checkurl))return '没有配置验证地址';
  20. $jg = contain($checkurl,'?')?'&':'?';
  21. $url = $checkurl.$jg.'ssotoken='.$ssotoken.'&ssokey='.$ssokey.'';
  22. $user = c('curl')->getcurl($url); //要返回用户帐号/手机号
  23. if(isempt($user))return '验证失败没有返回值';
  24. //调用登录方法验证
  25. $lobj = m('login');
  26. $rand = md5(''.$this->rock->now.''.$user.'');
  27. $lobj->setloginrand($rand);
  28. $arr = $lobj->start($user, $rand, 'pc','SSO');
  29. if(!is_array($arr)){
  30. return $arr;
  31. }else{
  32. $uid = $arr['uid'];
  33. $name = $arr['name'];
  34. $user = $arr['user'];
  35. $token = $arr['token'];
  36. $lobj->setsession($uid, $name, $token, $user);
  37. if(isempt($lurl)){
  38. $lurl = 'index.php?m=index';
  39. if($this->rock->ismobile())$lurl='index.php?d=we';
  40. }
  41. $this->rock->location($lurl);//跳转
  42. return 'success';
  43. }
  44. }
  45. }
粤ICP备19079148号