单点登录CAS学习(三) 通过JDBC进行登录验证

本文详细介绍了如何在CAS单点登录系统中通过JDBC实现动态密码验证,包括数据库设计、配置文件修改及MD5密码加密策略的设置。

上一章“搭建cas-overlay-5.3工程”说明了如何搭建一个cas服务端工程,细心的读者发现验证的时候登录账号和密码是静态的。实际的场景中,单点登录的服务端一般都是通过数据库进行密码验证的。

数据库中账号和密码至少分两类,一类是管理员,这个账号可以进行单点登录系统的管理和配置等等工作,还有一类账号是使用单点登录系统的成员,这些成员通过权限配置才真正的决定了可以通过单点登录系统登录到哪些客户端系统(多个应用)。

本章将实现通过JDBC的方式进行登录验证。

1、前置准备

         首先做如下准备

  1. 准备一个mysql数据库
  2. 创建用户表
  3. 插入如下数据

本例中使用的mysql数据库,本例中在test数据库中创建了user_info

CREATE TABLE `user_info` (

  `uid` int(11) NOT NULL AUTO_INCREMENT,

  `username` varchar(50) DEFAULT '' COMMENT '用户名',

  `password` varchar(255) DEFAULT NULL COMMENT '登录密码',

  `name` varchar(255) DEFAULT NULL COMMENT '用户真实姓名',

  `id_card_num` varchar(255) DEFAULT NULL COMMENT '用户身份证号',

  `state` char(1) DEFAULT '0' COMMENT '用户状态:0:正常状态,1:用户被锁定',

  PRIMARY KEY (`uid`),

  UNIQUE KEY `username` (`username`) USING BTREE,

  UNIQUE KEY `id_card_num` (`id_card_num`) USING BTREE

) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

 

 

 

 

接着我们插入如下几条数据

#插入用户信息表

INSERT INTO user_info(uid,username,`password`,`name`,id_card_num) VALUES (null,'admin','123456','管理员','111111');

INSERT INTO user_info(uid,username,`password`,`name`,id_card_num) VALUES (null,'zhangsan','123456','张三','222222');

INSERT INTO user_info(uid,username,`password`,`name`,id_card_num) VALUES (null,'lisi','123456','李四','333333');

INSERT INTO user_info(uid,username,`password`,`name`,id_card_num) VALUES (null,'wangwu','123456','王五','444444');

 

2、修改CAS的jdbc配置

修改pom文件

<dependency>
    <groupId>org.apereo.cas</groupId>
    <artifactId>cas-server-support-jdbc</artifactId>
    <version>${cas.version}</version>
</dependency>
<dependency>
    <groupId>org.apereo.cas</groupId>
    <artifactId>cas-server-support-jdbc-drivers</artifactId>
    <version>${cas.version}</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.36</version>
</dependency>
>修改完成后,会进行重新导入

 

 

修改配置文件 application.properties

1)注释静态登陆账号

2)添加jdbc相关配置

我的数据库为 test,账号为 root 密码为root123

在配置文件里面,添加如下内容:

#jdbc配置
#添加jdbc认证
cas.authn.jdbc.query[0].sql=SELECT * FROM user_info WHERE username =?
#那一个字段作为密码字段
cas.authn.jdbc.query[0].fieldPassword=password
#配置数据库连接
cas.authn.jdbc.query[0].url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
cas.authn.jdbc.query[0].dialect=org.hibernate.dialect.MySQLDialect
#数据库用户名
cas.authn.jdbc.query[0].user=root
#数据库密码
cas.authn.jdbc.query[0].password=root123
#mysql驱动
cas.authn.jdbc.query[0].driverClass=com.mysql.jdbc.Driver

 

3、验证

将工程运行起来,我们可以用数据库中的账号进行登录,如果前面都正确操作了,那么你可以用以下账号进行登录

 

 

 

修改密码采用MD5验证

由于一般情况下,密码是不明文暴露的,因此需要对密码进行加密处理。 一般情况下用MD5的比较多。CAS框架也支持MD5

  1. 首先在数据库里面插入一条用MD5保存密码的记录
INSERT INTO user_info(uid,username,`password`,`name`,id_card_num) VALUES (null,'admin2','e10adc3949ba59abbe56e057f20f883e','管理员','666666');

这里新的账号是 admin2, 密码 123456  MD5密码: e10adc3949ba59abbe56e057f20f883e

插入后,数据库中情况如下:

  1. 修改CAS的配置文件

在application.properties文件中jdbc后面添加上加密策略各属性

#配置加密策略

cas.authn.jdbc.query[0].passwordEncoder.type=DEFAULT

cas.authn.jdbc.query[0].passwordEncoder.characterEncoding=UTF-8

cas.authn.jdbc.query[0].passwordEncoder.encodingAlgorithm=MD5
#配如下图所示:

 

  1. 修改完成后,重启工程:

等待登陆页面起来后,做下面2个操作

  1. 使用admin 账号,密码: 123456 登陆

这个时候,由于使用了MD5作为密码策略,所以用密码123456登陆,登陆失败。原因是CAS会将123456转换成MD5编码,和数据库中的password字段进行比较,不一致则显示登陆失败

  1. 使用账号admin2 密码:123456 登陆

原因和上面也是一样。

 

 

内容概要:本文系统研究了移相控制全桥LLC谐振变换器的工作特性,深入分析其在不同工况下的运行机理与性能表现,并基于Simulink平台构建了完整的仿真模型进行验证。文章详细阐述了LLC谐振变换器的电路拓扑结构、工作原理、关键参数设计方法以及移相控制策略的实现机制,重点对电压增益特性、转换效率、软开关实现条件等核心性能指标进行了仿真分析,全面评估了系统在宽输入电压范围内的稳定性、动态响应能力及高效运行区间。; 适合人群:适用于电力电子、电气工程及其自动化等相关专业的高校研究生、科研机构研究人员以及从事高频开关电源、DC-DC变换器设计的工程技术人员;要求读者具备扎实的电路理论基础和一定的Simulink仿真应用经验。; 使用场景及目标:①深入掌握LLC谐振变换器的基本原理与数学建模方法;②理解并应用移相控制策略以提升高效率DC-DC变换器的性能;③通过仿真实践优化谐振腔参数(如谐振电感、励磁电感、谐振电容)与开关频率配置,提高电源系统的整体能效、功率密度和可靠性,服务于实际工程中的电源产品开发与性能验证。; 阅读建议:建议读者结合提供的Simulink仿真模型同步操作,重点探究谐振元件参数变化对系统增益曲线和ZVS软开关实现条件的影响,尝试调节移相角与开关频率以观察动态响应过程,从而深化对LLC变换器高频软开关特性和控制策略的理解。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值