使用CAS登录模块连接数据库验证用户合法性

简介: 使用CAS登录模块连接应用数据库验证用户合法性 关于如何配置CAS登录模块集成到开发的Web Application请看这里:http://blog.csdn.net/jia20003/article/details/49683827 基于cas server 3.5.0版本配置实现。

使用CAS登录模块连接应用数据库验证用户合法性

 关于如何配置CAS登录模块集成到开发的Web Application请看这里:

http://blog.csdn.net/jia20003/article/details/49683827

 基于cas server 3.5.0版本配置实现。

这里我们主要讲述如何利用已经存在的用户数据表user_table中的usernamepassword两个字段,实现用户从CAS模块登录时候查询我们应用数据库basicweb中的user_table表。验证用户名与密码,真正实现用户合法性检查。

 

大致步骤需要实现如下配置,首先打开cas serverwar包然后在WEB-INF目录下找到deployerConfigContext.xml这个文件,打开找到:

<bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />

替换为:

<bean id="SearchModeSearchDatabaseAuthenticationHandler"
	  class="org.jasig.cas.adaptors.jdbc.SearchModeSearchDatabaseAuthenticationHandler"
	  abstract="false" lazy-init="default" autowire="default" >
  <property  name="tableUsers">
   <value>user_table</value>
  </property>
  <property name="fieldUser">
   <value>username</value>
  </property>
  <property name="fieldPassword">
   <value>password</value>
  </property>
  <property name="dataSource" ref="dataSource" />
</bean>
 
<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
  <property name="dataSource" ref="dataSource" />
  <property name="sql" value="select password from user_table where lower(username) = lower(?)" />
</bean>

其中user_tablebasicweb数据库中的表

usernamepassword是它的两个字段名

 

然后在最外层的beans标签内添加DataSource相关配置如下:

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
	<property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property>  
	<property name="url"><value>jdbc:mysql://localhost:3306/basicweb</value></property>  
	<property name="username"><value>root</value></property>  
	<property name="password"><value>password123</value></property>  
</bean>  

保存以后覆盖war中原来的配置文件即可。最后还需要打开warWEB-INF目录下lib目录把mysql JDBC连接支持jar与下载好的cas-server-3.5.0-RC1\modules\cas-server-support-jdbc-3.5.0-RC1.jar都添加到lib目录中去,然后保存war,重新部署到tomcat\webapps目录下即可。

测试一下发现,Post提交form的时候取不到数据,解决办法是添加如下配置在web.xml中:

	<filter>
		<filter-name>CAS Validation Filter</filter-name>
		<filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>
		<init-param>
			<param-name>casServerUrlPrefix</param-name>
			<param-value>http://localhost:8080/cas</param-value>
		</init-param>
		<init-param>
			<param-name>serverName</param-name>
			<param-value>http://localhost:8080</param-value>
		</init-param>


		<!-- 代理 -->
		<init-param>
			<param-name>acceptAnyProxy</param-name>
			<param-value>true</param-value>
		</init-param>

		<!-- 配置为false,否则使用代理传来的参数接收不到 -->
		<init-param>
			<param-name>redirectAfterValidation</param-name>
			<param-value>false</param-value>
		</init-param>

	</filter>
原因在于如果不添加,直接提交它会去验证ticket,发现我们提交的URL后面没有 ticket就认为不合法,就重新创建了新ticket,导致form数据丢失



目录
相关文章
|
13天前
|
SQL 关系型数据库 MySQL
【Go语言专栏】使用Go语言连接MySQL数据库
【4月更文挑战第30天】本文介绍了如何使用Go语言连接和操作MySQL数据库,包括选择`go-sql-driver/mysql`驱动、安装导入、建立连接、执行SQL查询、插入/更新/删除操作、事务处理以及性能优化和最佳实践。通过示例代码,展示了连接数据库、使用连接池、事务管理和性能调优的方法,帮助开发者构建高效、稳定的Web应用。
|
1天前
|
关系型数据库 MySQL 数据库
mysql 设置环境变量与未设置环境变量连接数据库的区别
设置与未设置MySQL环境变量在连接数据库时主要区别在于命令输入方式和系统便捷性。设置环境变量后,可直接使用`mysql -u 用户名 -p`命令连接,而无需指定完整路径,提升便利性和灵活性。未设置时,需输入完整路径如`C:\Program Files\MySQL\...`,操作繁琐且易错。为提高效率和减少错误,推荐安装后设置环境变量。[查看视频讲解](https://www.bilibili.com/video/BV1vH4y137HC/)。
17 3
mysql 设置环境变量与未设置环境变量连接数据库的区别
|
3天前
|
Oracle Java 关系型数据库
【服务器】python通过JDBC连接到位于Linux远程服务器上的Oracle数据库
【服务器】python通过JDBC连接到位于Linux远程服务器上的Oracle数据库
14 6
|
3天前
|
SQL Java 关系型数据库
【JAVA基础篇教学】第十六篇:Java连接和操作MySQL数据库
【JAVA基础篇教学】第十六篇:Java连接和操作MySQL数据库
|
5天前
|
SQL Java 数据库连接
Java数据库编程实践:连接与操作数据库
Java数据库编程实践:连接与操作数据库
9 0
|
6天前
|
关系型数据库 Java 数据库
docker部署postgresql数据库和整合springboot连接数据源
docker部署postgresql数据库和整合springboot连接数据源
16 0
|
7天前
|
SQL JSON 关系型数据库
[UE虚幻引擎插件DTPostgreSQL] PostgreSQL Connector 使用蓝图连接操作 PostgreSQL 数据库说明
本插件主要是支持在UE蓝图中连接和操作PostgreSQL 数据库。
16 2
|
12天前
|
Java 关系型数据库 数据库连接
【C 言专栏】C 语言与数据库的连接与操作
【5月更文挑战第2天】本文探讨了C语言如何连接和操作数据库,介绍了数据库连接的基本原理,如通过ODBC、JDBC或原生接口与数据库交互。文章详细阐述了使用ODBC连接的步骤,并列举了C语言在数据库操作中的常见任务,强调了错误处理、数据类型匹配和性能优化的重要性。通过实际案例,展示了在学生信息管理系统中应用C语言与数据库交互的过程。本文旨在帮助读者更好地理解和应用C语言进行数据库管理。
|
14天前
|
关系型数据库 MySQL PHP
【PHP 开发专栏】PHP 连接 MySQL 数据库的方法
【4月更文挑战第30天】本文介绍了 PHP 连接 MySQL 的两种主要方法:mysqli 和 PDO 扩展,包括连接、查询和处理结果的基本步骤。还讨论了连接参数设置、常见问题及解决方法,如连接失败、权限和字符集问题。此外,提到了高级技巧如使用连接池和缓存连接信息以优化性能。最后,通过实际案例分析了在用户登录系统和数据管理中的应用。
|
14天前
|
运维 分布式计算 DataWorks
DataWorks产品使用合集之dataworks为子账号创建DataWorks访问密钥的基本步骤如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
28 0