CAS安装好默认使用的是静态用户和密码,但实际使用中,我们可能连接LDAP、数据库等其他情况。接下来,我们看一下如何使用CAS连接Mysql数据库。

创建数据库1

2

3

4

5

6

7

8DROP TABLE IF EXISTS `users`;

CREATE TABLE `users` (

`username` varchar(50) NOT NULL,

`password` varchar(50) NOT NULL,

PRIMARY KEY (`username`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

insert into users values ('admin','123456');

配置

使用数据库需要cas-server-support-jdbc的支持,在此依赖中的目录cas-4.2.1/cas-server-support-jdbc/src/main/java/org/jasig/cas/adaptors/jdbc中有多类组件完成配置。 以QueryDatabaseAuthenticationHandler为例,可参考官方文档

注意使用QueryDatabaseAuthenticationHandler作为数据验证方式需屏蔽一下类QueryAndEncodeDatabaseAuthenticationHandler,如下

QueryAndEncodeDatabaseAuthenticationHandler.java注释内容如下;

1

2

3

4

5......

//import org.springframework.stereotype.Component;

......

//@Component("queryAndEncodeDatabaseAuthenticationHandler")

......

修改完成后进入目录cas-4.2.1/cas-server-support-jdbc,重新执行gradle clean build,生成jar包cas-4.2.1/cas-server-support-jdbc/build/libs/cas-server-support-jdbc-4.2.1.jar, 并将此jar包放入webapps/cas/WEB-INF/lib中,由于本例使用mysql,所以需将mysql驱动包mysql-connector-java-5.1.25.jar也放到lib目录中。

接下来在文件webapps/cas/WEB-INF/deployerConfigContext.xml中增加以下配置,并注释掉一行

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

class="com.mchange.v2.c3p0.ComboPooledDataSource"

p:driverClass="${database.driverClass}"

p:jdbcUrl="${database.url}"

p:user="${database.user}"

p:password="${database.password}"

p:initialPoolSize="${database.pool.minSize}"

p:minPoolSize="${database.pool.minSize}"

p:maxPoolSize="${database.pool.maxSize}"

p:maxIdleTimeExcessConnections="${database.pool.maxIdleTime}"

p:checkoutTimeout="${database.pool.maxWait}"

p:acquireIncrement="${database.pool.acquireIncrement}"

p:acquireRetryAttempts="${database.pool.acquireRetryAttempts}"

p:acquireRetryDelay="${database.pool.acquireRetryDelay}"

p:idleConnectionTestPeriod="${database.pool.idleConnectionTestPeriod}"

p:preferredTestQuery="${database.pool.connectionHealthQuery}" />

接着配置/webapps/cas/WEB-INF/cas.properties,添加以下内容

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42# add by hode begin

# == Basic database connection pool configuration ==

database.driverClass=com.mysql.jdbc.Driver

database.url=jdbc:mysql://192.167.48.1:3306/hode

database.user=root

database.password=kroot

database.pool.minSize=6

database.pool.maxSize=18

# Maximum amount of time to wait in ms for a connection to become

# available when the pool is exhausted

database.pool.maxWait=10000

# Amount of time in seconds after which idle connections

# in excess of minimum size are pruned.

database.pool.maxIdleTime=120

# Number of connections to obtain on pool exhaustion condition.

# The maximum pool size is always respected when acquiring

# new connections.

database.pool.acquireIncrement=6

# == Connection testing settings ==

# Period in s at which a health query will be issued on idle

# connections to determine connection liveliness.

database.pool.idleConnectionTestPeriod=30

# Query executed periodically to test health

database.pool.connectionHealthQuery=select 1

# == Database recovery settings ==

# Number of times to retry acquiring a _new_ connection

# when an error is encountered during acquisition.

database.pool.acquireRetryAttempts=5

# Amount of time in ms to wait between successive aquire retry attempts.

database.pool.acquireRetryDelay=2000

# add by hode end

同时需取消注释项cas.jdbc.authn.query.sql,并添加sql语句

1cas.jdbc.authn.query.sql=select password from users where username=?

配置完成。重启tomcat即可用hode/123456进行登录,完成验证。

当然文明密码保存到数据库中是相当不安全的,所以需要保存加密后的密码,配置如下,此时md5后的结果与数据库的密码进行比较

1

2

3

4

5

6deployerConfigContext.xml增加一行

cas.properties增加两行

cas.authn.password.encoding.char=UTF-8

cas.authn.password.encoding.alg=MD5

cas mysql_使用CAS连接Mysql数据库相关推荐

  1. sqlalchemy 使用mysql_使用SQLALchemy连接MySql数据库并进行操作

    "导语:这期主要学一下利用SQLALchemy连接MySql数据库以及对数据库的增删改查的操作,可能代码部分很多还不能理解,我觉得像一些固定写法先用着(比如引入的类等),再慢慢体会缘由&qu ...

  2. python数据库连接mysql_使用Python连接MySQL数据库

    本篇文章使用python中的pymysql库连接MySQL数据库,并完成建表,数据写入和查询的过程.为了保证内容的完整性,我们将内容分为两个 阶段,***阶段简单介绍数据的爬取过程.看过之前爬虫文章的 ...

  3. 使用jdbc驱动连接mysql_使用jdbc连接mysql数据库

    1.提供mysql的jdbc驱动(我的博客文件里提供了驱动jar包) 2.使用IDEA工具,把jar包添加到项目里(具体步骤如下) 1)打开模块设置 2)选择libraries功能,点击+号,选择ja ...

  4. spring无法连接mysql_初学Spring——连接MySQL数据库的问题和解决

    零:前言 初学Spring + Angular才不到一周时间,刚打开第一个Spring的示例项目,在运行时就出现了错误. 代码如下: *************************** APPLI ...

  5. cpp mysql_使用MYSQLCPPCONN连接MYSQL数据库与读写BLOB字段

    起初也是用C语言接口, 但不知为什么在VS2010下使用时调用mysql_thread_init()函数总是失败(动态链接) 其他函数也用不了, 用了一阵子的ODBC但不会操作BLOB字段 遂转到MY ...

  6. spring下连接mysql_使用Spring连接mysql数据库

    本例是使用spring定义数据源Bean,使用c3p0数据源实现连接 spring bean 文件 my_connection.xml xmlns="http://www.springfra ...

  7. python用django连接mysql_三分钟了解Django如何连接Mysql数据库

    处理用户注册请求.Django连接MysqL数据库相关配置.数据库迁移命令: my_Dproject/app01/views.py    在views函数文件中添加register函数,来处理用户注册 ...

  8. pydev集成mysql_【Python】Windows平台下Python、Pydev连接Mysql数据库

    Mysql数据库是跨平台的,不是说Python一定就要连接Mongodb. Python连接Mysql数据库是非常easy的. 首先,你要配置好Python的开发环境,详见<[Python]Wi ...

  9. java写一个窗体并连接MySQL_大神帮忙写一个简单地java页面,连接MySQL数据库之后能够显示数据库上的数据...

    展开全部 用jdbc 连接mysql数据库就行了,网上搜下一大把. --记得在classpath下加入mysql 的jdbc驱动包. /** * @author :来e68a84e8a2ad32313 ...

最新文章

  1. 计算机控制里ddc什么缩略语,空调自动化术语和缩略语.doc
  2. GOF23种设计模式(Design Pattern)总结
  3. ttlink无线打印服务器固件,TTLINK TT-180U1打印机服务器 TCP/IP添加打印机的教程
  4. 25个出众的Web表单范例
  5. 最优化导论(part2)--对偶问题的性质
  6. 深入浅出深度学习(二)分类器
  7. 十个网志流量统计工具一览
  8. java多线程详解(8)-volatile,Atomic比较
  9. SecureCRT 安装与配置大全
  10. [CMake] message 打印变量值
  11. JavaScript丧尸游戏开发教程
  12. 《Java多线程编程核心技术》学习笔记(1)
  13. 毛毛虫 树形DP
  14. 最新台式计算机CPU,三月台式电脑CPU性能排行榜, 2019年3月最新版CPU天梯图
  15. [生活日记]参与unity非游戏行业开发者大会小结
  16. CSS3制作圆角图片和椭圆形图片
  17. 离散数学及其应用复盘 | 第3版第4章——谓词逻辑思维导图梳理(复习专用)
  18. 致远OA管理员密码的重置
  19. python火车抢票_春运火车票太难抢?不如试试这个python开源工具吧
  20. 用outook发邮件能撤回吗?邮件怎么撤回技巧

热门文章

  1. 好记性不如烂笔头(2)
  2. 使用RestTemplate:报错Could not extract response: no suitable HttpMessageConverter found for response typ
  3. 华为国产系统Android,安卓系统已成昨日黄花!这个国产系统要挑战iOS!
  4. python买苹果增强版
  5. python使用turtle库绘制一个100长度的十字架_使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例...
  6. 在b站上跟着沐神学习深度学习
  7. 简述JS中 appy 和 call 的详细用法
  8. 代码注释生成文档之Doxygen 附说明+下载连接
  9. Python 文件目录操作
  10. 百度深度学习框架paddlepaddle实战三——自家车牌识别