CAS5.3使用自定义获取更多的用户信息

玩过cas的小伙伴都知道CAS-Server本身是支持CAS和OAuth2.0两种协议的, 之前写过一篇使用OAuth2.0协议获取用户信息的文章,今天来介绍一下CAS协议怎么获取更多的用户信息

分析

OAuth2.0协议的用户信息是接口返回的, 因此我们修改接口的实现就可以, CAS获取用户信息都是从session中获取的, 这样我们就得想办法在用户请求登录的时候想办法把用户信息放到session中

操作步骤

引入依赖

<!-- Json Service Registry --><dependency><groupId>org.apereo.cas</groupId><artifactId>cas-server-support-json-service-registry</artifactId><version>${cas.version}</version>
</dependency><!-- Authentication Attributes -->
<dependency><groupId>org.apereo.cas</groupId><artifactId>cas-server-core-authentication-attributes</artifactId><version>${cas.version}</version>
</dependency>

修改json文件

返回所有用户信息

{"@class" : "org.apereo.cas.services.RegexRegisteredService","serviceId" : "^(https|imaps|http)://test.cas.com.*","name" : "测试客户端app1","id" : 1000,"description" : "123456","evaluationOrder" : 10,"theme" : "app1","attributeReleasePolicy" : {"@class" : "org.apereo.cas.services.ReturnAllAttributeReleasePolicy"}
}

返回部分用户信息

{"@class" : "org.apereo.cas.services.RegexRegisteredService","serviceId" : "^(https|imaps|http)://test.cas.com.*","name" : "测试客户端app2","id" : 1001,"description" : "123456","evaluationOrder" : 11,"theme" : "app2","attributeReleasePolicy" : {"@class" : "org.apereo.cas.services.ReturnAllowedAttributeReleasePolicy""allowedAttributes" : [ "java.util.ArrayList", [ "name", "phone" ] ]}
}

这里有一个下需要注意的点: servuceId这个属性一定要配置正确, 最好不要有默认匹配所有url的配置, 因为如果有那个配置得话, 默认不一定会走这个json配置, 每一个json配置文件都相当于一种实现, 他里面使用的是策略模式这样会有多个满足条件的情况, 所以会有问题

重写实现类

/*** 自定义登录拦截器** @author zzt* @version v1.0.0* @date 2024/7/17*/
@Setter
public class MyAuthenticationHandler extends AbstractPreAndPostProcessingAuthenticationHandler {private SysUserService sysUserService;public MyAuthenticationHandler(String name,ServicesManager servicesManager,PrincipalFactory principalFactory,Integer order) {super(name, servicesManager, principalFactory, order);}@Overrideprotected AuthenticationHandlerExecutionResult doAuthentication(Credential credential) throws GeneralSecurityException, PreventedException {//查询用户信息SysUser sysUser = sysUserService.getBaseMapper().selectOne(Wrappers.<SysUser>lambdaQuery().eq(SysUser::getUserName, username));if (ObjectUtils.isNotEmpty(sysUser)) {if (StringUtils.equals(username, sysUser.getUserName()) &&StringUtils.equals(PasswordUtil.getPassword(password, sysUser.getSalt()), sysUser.getPassword())) {if (Objects.equals(sysUser.getPhone(), phone) && StringUtils.isNotBlank(smsVerifyCode)) {return createHandlerResult(credential,this.principalFactory.createPrincipal(username), Collections.emptyList());} }}@Overridepublic boolean supports(Credential credential) {return credential instanceof UserPwdCredential;}
}

这里代码其实很简单就是把用户信息查询出来然后全部都返回了, 但是有一个问题, 注意看线面重写的一个方法, 他返回的是一个boole类型的数据, 这就是它的策略模式, 这里的问题涉及到请求信息, 目前这篇文章还不涉及, 这个将在后续文章中继续研究

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/51483.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

虚拟局域网络(VLAN)详解

一、VLAN概述 VLAN(Virtual Local Area Network,虚拟局域网络)技术是一种将物理局域网在逻辑上划分为多个虚拟网络的技术。VLAN技术的出现,打破了传统物理网络的限制,使得网络管理更加灵活、高效。VLAN技术广泛应用于企业网络、数据中心、云计算环境等各个领域,为网络的…

这个暑假适合港澳游?免税额度提升、专属暑期活动、餐饮娱乐攻略

2024年7月1日免税额度的新政实施&#xff0c;在香港澳门消费的免税额度将达到15000元。这也让今年夏天的港澳旅游多了几分吸引力&#xff0c;如果有计划趁着这个暑假前往港澳旅游的话&#xff0c;这篇港澳游攻略一定能帮到你&#xff01; 【民以食为天&#xff0c;旅游第一步—…

“多分辨率图网络”的模型:准确识别卵巢癌各种亚型

卵巢癌发病率居我国女性生殖系统恶性肿瘤第3位&#xff0c;死亡率居妇科恶性肿瘤之首&#xff0c;其特点是存在异质性的组织学亚型。最常见的五种亚型&#xff0c;占所有卵巢癌的90%&#xff0c;分别是高级别浆液性癌&#xff08;HGSC&#xff09;、低级别浆液性癌&#xff08;…

项目实战--JUC之CompletableFuture温故

CompletableFuture温故 一、前言二、Future三、CompletableFuture3.1 CompletableFuture定义3.2 CompletableFuture使用场景3.3 CompletableFuture 常见操作3.3.1 创建CompletableFuture3.3.2 使用CompletableFuture3.3.3 异常处理3.3.4 注意事项 四、CompletableFuture处理工具…

阿里云创建的SpringBoot项目打包时找不到主清单属性

原因是因为maven配置文件中有一个打包属性配置 <configuration><mainClass>com.yang.ExamSystemApplication</mainClass><!-- 找到这个<skip>true</skip>标签关闭&#xff0c;或者属性改为false --><skip>true</skip> </c…

Hive环境搭建(Mysql数据库)

【实验目的】 1) 了解hive的作用 2) 熟练hive的配置过程&#xff08;Mysql数据库&#xff09; 【实验原理】 Hive工具中默认使用的是derby数据库&#xff0c;该数据库使用简单&#xff0c;操作灵活&#xff0c;但是存在一定的局限性&#xff0c;hive支持使用第三方数据库&…

第一百八十三节 Java IO教程 - Java目录事件、Java异步I/O

Java IO教程 - Java目录事件 当文件系统中的对象被修改时&#xff0c;我们可以监听watch服务以获取警报。 java.nio.file包中的以下类和接口提供watch服务。 Watchable接口WatchService接口WatchKey接口WatchEvent接口WatchEvent.Kind接口StandardWatchEventKinds类 可监视对…

FPGA开发——按键控制LED的实现

一、概述 在上一篇文章中我们学习了按键的相关消抖及其使用&#xff0c;在这篇文章当中我们就针对通过按键实现LED的控制。 1、按键原理图 2、基本框架 通过我们前面编写的按键消抖的文件和LED文件将按键和LED两个模块进行交互&#xff0c;从而达到按键控制LED的目的。 二、…

计算机毕业设计碾压导师Python+Django农产品推荐系统 农产品爬虫 农产品商城 农产品大数据 农产品数据分析可视化 PySpark Hadoop

基于Spark的农产品个性推荐系统 相关技术介绍: 1. Python Python是一种高级编程语言&#xff0c;具有简洁、易读、易学的特点&#xff0c;被广泛应用于Web开发、数据分析、人工智能等领域。 在此系统中&#xff0c;我们使用Python进行后端开发&#xff0c;利用其强大的语法…

Mysql 输出本月初至当前的全部天数

代码&#xff1a; SELECT DATE_FORMAT(DATE_ADD(CONCAT(DATE_FORMAT(CURDATE(), "%Y-%m-01")),INTERVAL (CAST(help_topic_id AS SIGNED)) DAY),%Y-%m-%d) as DATE FROMmysql.help_topic WHERE help_topic_id < TIMESTAMPDIFF(DAY, CONCAT(DATE_FORMAT(CURDATE…

【最优化方法】随笔 - 基本概念简单整理

文章目录 前言1.背景知识两个概念&#xff1a; 2.最优化问题2.1应用2.2 最优化问题的数学形式极小化目标函数可行区域可行解 2.3 举例说明2.4 最优化问题不同的类型2.5 一些概念 3.凸集和凸函数3.1 范数3.2 矩阵范数&#xff08;扩展&#xff09;3.3 凸集与凸函数凸集凸函数 写…

实时宽表建设

实时宽表建设是数据仓库&#xff08;Data Warehouse, 简称数仓&#xff09;中的一种重要建模技术&#xff0c;旨在提高数据查询和分析的效率。以下是对实时宽表建设的详细解释&#xff1a; 一、定义 实时宽表&#xff0c;顾名思义&#xff0c;是指具有较多字段&#xff08;列…

无人机像素经纬度识别

&#x1f3c6;本文收录于《CSDN问答解惑-专业版》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收…

组件库 组件工程化管理探索

文章目录 组件库单组件版本控制打包组件在用户项目中注册组件项目可以直接在模版中使用引入的打包后的组件原因 每个组件独立的 package.json 文件的单组件包管理使用 lerna 或 yarn workspaces 进行统一管理添加组件文档、测试通过 CI/CD 流水线自动化这个流程 国际化换肤组件…

旅美钢琴学者何超东北巡演启幕,精湛演绎肖邦全套作品

7月26日、28日&#xff0c;旅美钢琴学者何超在长春和哈尔滨两地成功开启了他的暑期钢琴独奏音乐会东北巡演。在这两场演出中&#xff0c;何超为观众带来了全套肖邦的「谐谑曲」与「叙事曲」&#xff0c;以娴熟的技巧、惊人的记忆力和体力&#xff0c;将八首曲目一气呵成&#x…

一体化政务大数据体系-数据目录系统

1、系统目标 实现数据目录一体化&#xff0c;按照应编尽编的原则&#xff0c;推动各地区各部门建立全量覆盖、互联互通的高质量一体化政务数据目录。建立数据目录系统与部门目录、地区目录实时同步更新机制&#xff0c;实现政务数据“一本账”管理。 2、需求描述 一是实现政…

这可能是开源界最好用的能源管理系统

&#x1f482; 个人网站: IT知识小屋&#x1f91f; 版权: 本文由【IT学习日记】原创、在CSDN首发、需要转载请联系博主&#x1f4ac; 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦 文章目录 写在前面项目简介项目特点项目架构模块展示项目获取 写在前面 大…

buu做题(9)

[MRCTF2020]PYWebsite 有个二维码 扫了一下啊二维码 function enc(code){hash hex_md5(code);return hash;}function validate(){var code document.getElementById("vcode").value;if (code ! ""){if(hex_md5(code) "0cd4da0223c0b280829dc3ea4…

Java之归并排序

归并排序 归并排序(Merge Sort)算法&#xff0c;使用的是分治思想。分治&#xff0c;顾名思义&#xff0c;就是分而治之&#xff0c;将一个大问题分解成小的子问题来解决。小的子问题解决了&#xff0c;大问题也就解决了。 核心源码: mergeSort(m->n) merge(mergeSort(m-&g…

Java8新特性(一) Lambda表达式与函数式接口

Java8新特性&#xff08;一&#xff09; Lambda表达式与函数式接口 一. 基本概念 Lambda表达式是Java 8中引入的一个重要的新特性&#xff0c;该表达式提出了一种新的语法规则&#xff0c;用于对某些&#xff08;函数式接口&#xff09;匿名内部类的书写方式进行简化。除此之外…