thinkphp5.1对接cas5.3单点登录

最近在做thinkphp5.1对接cas5.3的项目,从网上查了好多资料,发现tp5.1对接cas5.3的资料特别少,经过摸索,现已经测试对接成功,能够实现认证,将方法分享给大家,如有更优方案,请留言沟通交流,大家共同进步。

下载phpCAS1.6

没有安装composer的请自行安装

composer require apereo/phpcas

1、修改client.php,支持http协议
文件路径:\tp项目根目录\vendor\apereo\phpcas\source\CAS\Client.php
在这里插入图片描述

2、在config/app.php中增加以下配置

//cas配置信息
'server_hostname' => 'www.sso.com',  //服务器地址(不能带http://)
'server_port' => 8443,  //cas server端口
'server_uri' => '/cas', //cas路径
'service_base_url' => 'http://www.xxx.com', //认证成功后跳转地址,修改为自己的业务系统地址

Base.php拦截控制器代码

注意:端口号不能带引号,否则登录页将出现空白

<?php
//公共控制器
namespace app\index\controller;

use phpCAS;
use think\Controller;

class Base extends Controller
{
    protected function initialize()
    {
        parent::initialize();
        
        //cas配置
        $server_hostname = Config::get('app.server_hostname');  //服务器地址
        $server_port = Config::get('app.server_port');  //cas server端口
        $server_uri = Config::get('app.server_uri');
        $service_base_url = Config::get('app.service_base_url'); //认证成功后跳转地址
        $phpCAS = new phpCAS();
        $phpCAS::setLogger();
        $phpCAS::client(CAS_VERSION_2_0, $server_hostname, $server_port, $server_uri,$service_base_url);
        $phpCAS::setNoCasServerValidation();
        $phpCAS::handleLogoutRequests();
        $auth = $phpCAS::forceAuthentication();

        if ($auth) {
            # 验证通过,或者说已经登陆系统,可进行已经登陆之后的逻辑处理...
        } else {
            //还未登陆,跳转到CAS进行登陆
            $cas_url = 'http://'.Config::get('app.server_hostname').':'.Config::get('app.server_port').Config::get('app.server_uri');
            $this->redirect(url($cas_url));
        }
    }
}

logout登出方法

# 登出方法一:登出成功后跳转的地址
//phpCAS::setServerLoginUrl("https://192.168.1.120:80/cas/logout?embed=true&service=http://localhost/phpCasClient/user.php?a=login");
//phpCAS::logout();
# 登出方法二:退出登录后返回地址
//$param = array("service" => "http://cas.wzh.com");
//phpCAS::logout($param);


/*
 * 退出
 */
public function logout()
{
    Session::clear();
    $logout_url = 'http://'.Config::get('app.server_hostname').':'.Config::get('app.server_port').Config::get('app.server_uri').'/logout';
    $this->redirect($logout_url);
}

获得登录用户信息

# 获得登陆CAS用户的名称
$phpCAS = new phpCAS();
$user_name = $phpCAS::getUser();
echo $user_name;

# 还可打印保存的phpCAS session信息
print_r($_SESSION);

# 还可获取有关已验证用户的属性,例如:$uid = phpCAS::getAttribute('id');
# 关于此部分用户属性数据设置说明:https://my.oschina.net/liucao/blog/479755
$attr = $phpCAS::getAttributes();
print_r($attr);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值