先将CAS PHP版支持包引入,然后进入下面环节。下载地址http://developer.jasig.org/cas-clients/php/1.3.4/CAS-1.3.4.tgz 1.去除登录输入

upload\template\default\member\login-simple.html

删除8-29行代码,删除31-32行代码

2.去除弹框登录

upload/admin.php-=》界面-》去掉浮动窗口(登录)

3.在CAS文件夹中创建CasClientConfig.php

define ( 'CAS_SERVER_HOSTNAME', '192.168.32.7' );

define ( 'CAS_SERVER_PORT', 8080 );

define ( 'CAS_SERVER_APP_NAME', "cas_server" );

?>

4.在CAS文件中创建CasClient.php

require_once DISCUZ_ROOT.'./CAS/CasClientConfig.php'; // 注意

require_once DISCUZ_ROOT.'./CAS.php'; // 注意

// 初始化

//phpCAS::setDebug ();

// initialize phpCAS

phpCAS::client ( CAS_VERSION_2_0, CAS_SERVER_HOSTNAME, CAS_SERVER_PORT, CAS_SERVER_APP_NAME );

// no SSL validation for the CAS server

phpCAS::setNoCasServerValidation ();

?>

5.source/class/class_core.php第16行加入

require_once DISCUZ_ROOT."Cas/CasClient.php";

6.uc_client/control/user.php

134行注释

//elseif($user['password'] != md5($passwordmd5.$user['salt'])) {

//$status = -2;

//} elseif($checkques && $user['secques'] != $_ENV['user']->quescrypt($questionid, $answer)) {

//$status = -3;

//}

注释 onsynlogin、onsynlogout、onregister方法

7.source/function/member.php加入

// 新加的方法,用以支持CAS 登录

function userloginCas($username, $ip = '') {

$return = array ();

if(!function_exists('uc_user_login')) {

loaducenter();

}

$return['ucresult'] = uc_user_login(addslashes($username), '', 0, 0,'', '', $ip);

$tmp = array ();

$duplicate = '';

list ( $tmp ['uid'], $tmp ['username'], $tmp ['password'], $tmp ['email'], $duplicate ) = $return ['ucresult'];

$return ['ucresult'] = $tmp;

if ($duplicate && $return ['ucresult'] ['uid'] > 0 || $return ['ucresult'] ['uid'] <= 0) {

$return ['status'] = 0;

return $return;

}

$member = getuserbyuid ( $return ['ucresult'] ['uid'], 1 );

if (! $member || empty ( $member ['uid'] )) {

$return ['status'] = - 1;

return $return;

}

$return ['member'] = $member;

$return ['status'] = 1;

if ($member ['_inarchive']) {

C::t ( 'common_member_archive' )->move_to_master ( $member ['uid'] );

}

if ($member ['email'] != $return ['ucresult'] ['email']) {

C::t ( 'common_member' )->update ( $return ['ucresult'] ['uid'], array (

'email' => $return ['ucresult'] ['email']

) );

}

return $return;

}

8.source/class/class_member.php

51行注释并改为

//if(!submitcheck('loginsubmit', 1, $seccodestatus)) {

if (1 == 2) {

92行 $_G['username'] = $_G['member']['username'] = $_G['member']['password'] = '';后加入

phpCAS::setNoClearTicketsFromUrl ();

//这里会检测服务器端的退出的通知,就能实现php和其他语言平台间同步登出了

phpCAS::handleLogoutRequests();

$username='';

if(phpCAS::isAuthenticated()){

$username = phpCAS::getUser ();

} else {

phpCAS::forceAuthentication ();

}

//if(!$_GET['password'] || $_GET['password'] != addslashes($_GET['password'])) {

//showmessage('profile_passwd_illegal');

//}

//$result = userlogin($_GET['username'], $_GET['password'], $_GET['questionid'], $_GET['answer'], $this->setting['autoidselect'] ? 'auto' : $_GET['loginfield'], $_G['clientip']);

$result = userloginCas($username, $_G['clientip']);

347行 on_logout方法

if(defined('IN_MOBILE')) {

showmessage('location_logout_succeed_mobile', dreferer(), array('formhash' => FORMHASH, 'referer' => rawurlencode(dreferer())));

} else {

$service =  dreferer ()  ;

phpCAS::logoutWithRedirectService ( $service );

//showmessage('logout_succeed', dreferer(), array('formhash' => FORMHASH, 'ucsynlogout' => $ucsynlogout, 'referer' => rawurlencode(dreferer())));

}

386行 on_register方法中

if(strpos($url_forward, $this->setting['regname']) !== false) {

$url_forward = 'forum.php';

}

修改掉防止当登录成功时无限跳转

$url_forward = 'forum.php';

去除https CAS\Client.php

$this->_server['base_url'] = 'https://' . $this->_getServerHostname();

改为

$this->_server['base_url'] = 'http://' . $this->_getServerHostname();

关闭gateway CAS\Client.php

$this->redirectToCas(true/* gateway */);

改为

$this->redirectToCas(false/* gateway */);

待续(缺少PHP监听CAS cookie中的账号phpCAS:checkAuthentication() 不存在就清理session完毕)

php 模拟 cas,PHP discuz3.2 cas相关推荐

  1. Java并发编程之CAS第三篇-CAS的缺点

    Java并发编程之CAS第三篇-CAS的缺点 通过前两篇的文章介绍,我们知道了CAS是什么以及查看源码了解CAS原理.那么在多线程并发环境中,的缺点是什么呢?这篇文章我们就来讨论讨论 本篇是<凯 ...

  2. java cas登陆实例_Java CAS基本实现原理代码实例解析

    一.前言 了解CAS,首先要清楚JUC,那么什么是JUC呢?JUC就是java.util.concurrent包的简称.它有核心就是CAS与AQS.CAS是java.util.concurrent.a ...

  3. java cas 实现_Java中CAS 基本实现原理

    一.前言 了解CAS,首先要清楚JUC,那么什么是JUC呢?JUC就是java.util.concurrent包的简称.它有核心就是CAS与AQS.CAS是java.util.concurrent.a ...

  4. cas入门之六:cas 登录流程(下)

    假设cas server服务地址:http://cas-server:8080/cas cas client集成的应用地址:http://cas-client:8070/castest cas cli ...

  5. CAS - CentOS下部署CAS服务器及简单使用

    下载CAS并打成War包:https://github.com/apereo/cas-overlay-template 然后在服务器上安装Tomcat,如果运行多个Tomcat,需要修改Tomcat配 ...

  6. 【工欲善其事必先利其器·单点登录】使用CAS WAR Overlays部署CAS

    CAS WAR Overlays是CAS官网最为推荐的安装部署方式,为何最为推荐,可阅读<CAS 部署建议>了解.本篇文章详细介绍CAS WAR Overlays部署步骤. 一.安装JDK ...

  7. cas 修改服务器ip,Cas 服务器 Service(Cas客户端)注册信息维护

    作为Cas服务器,允许哪些客户端接入与否是通过配置来定义的.对Cas服务器来说,每一个接入的客户端与一个Service配置对应:在Cas服务器启动时加载并注册上这些Service,与之对应的客户端才能 ...

  8. 从hotspot底层对象结构理解锁膨胀升级过程||深入jdk源码理解longadder的分段cas优化机制——分段CAS优化

    深入jdk源码理解longadder的分段cas优化机制 longadder

  9. CAS教程-第一篇-CAS单点登录原理解析

    转载自:http ://www.cnblogs.com/lihuidu/p/6495247.html 1,基于饼干的单点登录的回顾 基于Cookie的的单点登录核心原理: 将用户名密码加密之后存于饼干 ...

最新文章

  1. Luogu 2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm
  2. 【面试招聘】一份转ML的面试心得记录
  3. python类型和格式_json数据格式和python中字典的数据类型
  4. 从浪漫走向坚韧:开源数据库的演变
  5. Oculus首席科学家发声,称VR需要能够“欺骗”大脑
  6. python数据如何保存到excel中
  7. Python还值得学吗?
  8. 关于移动端video-player点击播放自动全屏
  9. 图像相似度对比分析软件,图像相似度对比分析法
  10. dvwa安装教程(LNMP一套Linux+Nginx+MariaDB+PHP)
  11. Mybatis使用map参数查询
  12. SOLIDWORKS参数化设计方式几多种,你都用恰当了吗?
  13. C++题目分享之锯木头
  14. pytorch einsum, numpy einsum
  15. 二分查找法及二分搜索树及其C++实现
  16. 计算鬼成像学习笔记一:简介
  17. 四史教育自动答题思路讲解(附加Java代码)
  18. 媒体中心软件专题:XBMC
  19. VLOOKUP查找未交作业的学生
  20. 微信表情包下载保存到本地,(新版微信可用)简单教程

热门文章

  1. Vue项目实战07:引入Normalize.css样式初始化
  2. 今天第一次写博客,先不说技术了
  3. AI:IPPR的数学表示-CNN基本结构分析( Conv层、Pooling层、FCN层/softmax层)
  4. 利用事件进行窗体间传值
  5. 回溯法求解N皇后问题(Java实现)
  6. JDB2导致磁盘io使用率高
  7. 最激动人心的视觉系统其实是最枯燥乏味的
  8. CentOS SSH安装与配置
  9. freebsd镜像作用和vmware服务开启
  10. android开源项目框架大全:《IT蓝豹》