Thinkphp整合phpCAS单点登录实例,解决无法登出的问题

  1. 资源

官方文档:https://apereo.atlassian.net/wiki/spaces/CASC/pages/103252517/phpCAS

下载地址:https://apereo.atlassian.net/wiki/spaces/CASC/pages/103252517/phpCAS

 

  1. 无法获取Attributes

原理:CAS_VERSION_2_0改成CAS_VERSION_3_0

 

  1. 无法logout登出

原理:使用redis统一管理session,登录则sessionid与cas服务器传递的ticket绑定,退出则通过ticket销毁对应的session

 

  1. 以TP3为例,整合phpCAS

下载后文件放入../web/ThinkPHP/Library/Vendor/phpCAS目录

 

  1. 以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

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值