- 资源
官方文档:https://apereo.atlassian.net/wiki/spaces/CASC/pages/103252517/phpCAS
下载地址:https://apereo.atlassian.net/wiki/spaces/CASC/pages/103252517/phpCAS
- 无法获取Attributes
原理:CAS_VERSION_2_0改成CAS_VERSION_3_0
- 无法logout登出
原理:使用redis统一管理session,登录则sessionid与cas服务器传递的ticket绑定,退出则通过ticket销毁对应的session
- 以TP3为例,整合phpCAS
下载后文件放入../web/ThinkPHP/Library/Vendor/phpCAS目录
- 以TP3为例,整合redis统一管理session
在config中配置redis
| 'SESSION_AUTO_START' => true, // 是否自动开启Session 'SESSION_TYPE' => 'Redis', //session类型 'SESSION_PERSISTENT' => 1, //是否长连接(对于php来说0和1都一样) 'SESSION_CACHE_TIME' => 1, //连接超时时间(秒) 'SESSION_EXPIRE' => 3600, //session有效期(单位:秒) 0表示永久缓存 'SESSION_PREFIX' => '', //session前缀,不能加前缀,因为本项目中比较坑,用了tp3的session()又用了原生的$_SESSION 'SESSION_REDIS_HOST' => '127.0.0.1', //分布式Redis地址,默认第一个为主服务器,即db0 'SESSION_REDIS_AUTH' => password, 'SESSION_REDIS_PORT' => '6379', |
在../web/ThinkPHP/Library/Think/Session目录下增加Redis.class.php
| <?php // +---------------------------------------------------------------------- // | ThinkPHP [ WE CAN DO IT JUST THINK ] // +---------------------------------------------------------------------- // | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved. // +---------------------------------------------------------------------- // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 ) // +---------------------------------------------------------------------- // | Author: liu21st <liu21st@gmail.com> // +----------------------------------------------------------------------
namespace think\session\driver;
use SessionHandler; class Redis extends SessionHandler { /** @var \Redis */ protected $handler = null; protected $config = [ 'host' => '127.0.0.1', // redis主机 'port' => 6379, // redis端口 'password' => '', // 密码 'select' => 0, // 操作库 'expire' => 3600, // 有效期(秒) 'timeout' => 0, // 超时时间(秒) 'persistent' => true, // 是否长连接 'session_name' => '', // sessionkey前缀 ]; public function __construct() { $options = array ( 'host' => C('SESSION_REDIS_HOST') ? C('SESSION_REDIS_HOST') : '127.0.0.1', 'port' => C('SESSION_REDIS_PORT') ? C('SESSION_REDIS_PORT') : 6379, &nb |

本文介绍了如何在ThinkPHP框架中整合phpCAS进行单点登录,并解决了无法正常登出的问题。通过修改CAS_VERSION_2_0为CAS_VERSION_3_0来获取Attributes,同时利用redis实现session统一管理。在登出时,通过绑定的ticket销毁对应session。提供了下载链接、配置示例及登录、登出关键代码。

501

被折叠的 条评论
为什么被折叠?



