快捷搜索:  汽车  科技

cas自定义登录验证不连接数据库:CAS单点登录之支持数据库认证

cas自定义登录验证不连接数据库:CAS单点登录之支持数据库认证登录成功,显示页面<util:mapid="authenticationHandlersResolvers"> <entrykey-ref="proxyAuthenticationHandler"value-ref="proxyPrincipalResolver"/> <!--<entrykey-ref="primaryAuthenticationHandler"value-ref="primaryPrincipalResolver"/>--> <entrykey-ref="queryDatabaseAuthenticationHandler"value-ref="primaryPrincipalResolver"/>

作者 | smileNicky

来源 | urlify.cn/iYnuQb

一、数据库设计

建数据库,加用户信息表:

DROPTABLEIFEXISTS`sys_user`; CREATETABLE`sys_user`( `id`int(11)NOTNULLAUTO_INCREMENTCOMMENT'用户Id' `username`varchar(100)NOTNULLCOMMENT'用户名' `password`varchar(100)NOTNULLCOMMENT'密码' `phone`varchar(11)DEFAULTNULLCOMMENT'手机' `sex`varchar(6)DEFAULTNULLCOMMENT'性别' `email`varchar(100)DEFAULTNULLCOMMENT'邮箱' `mark`varchar(100)DEFAULTNULLCOMMENT'备注' `rank`varchar(10)DEFAULTNULLCOMMENT'账号等级' `lastLogin`dateDEFAULTNULLCOMMENT'最后一次登录时间' `loginIp`varchar(30)DEFAULTNULLCOMMENT'登录ip' `imageUrl`varchar(100)DEFAULTNULLCOMMENT'头像图片路径' `regTime`dateNOTNULLCOMMENT'注册时间' `locked`tinyint(1)DEFAULTNULLCOMMENT'账号是否被锁定' `rights`varchar(100)DEFAULTNULLCOMMENT'权限(没有使用)' PRIMARYKEY(`id`) UNIQUEKEY`uk_u_1`(`username`) )ENGINE=InnoDBAUTO_INCREMENT=5DEFAULTCHARSET=utf8; 二、CAS配置部署

在CAS.war里找到WEB-INF下面的cas.properties,这是cas的配置文件,可以自己加上一些配置:

## #Datasourceconfig platform.jdbc.jdbcUrl=jdbc:mysql://127.0.0.1:3306/jeeplatform?autoReconnect=true&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false platform.jdbc.username=root platform.jdbc.password=root platform.jdbc.publickey=HHwwDSJKoZIhvcNAQEBBQADSwAwSAJBAKZijIzzXp1dyksL1ZSejBmuVz1Y0vgiQVbcQ/13p4pwHRo8gU3pd6YaWutOlBTEWvHBbnGxIdnrhxnQZGwU1O0CAwEAAQ== platform.jdbc.initialSize=10 platform.jdbc.minIdle=10 platform.jdbc.maxActive=50

同样在WEB-INF的developerConfigContext.xml里,加上数据库DataSource的配置,这里用了阿里的druid,所以需要往lib文件夹里丢一下druid的相关jar

<beanid="dataSource"class="com.alibaba.druid.pool.DruidDataSource"init-method="init"destroy-method="close"> <propertyname="url"value="${platform.jdbc.jdbcUrl}"/> <propertyname="username"value="${platform.jdbc.username}"/> <propertyname="password"value="${platform.jdbc.password}"/> <propertyname="initialSize"value="${platform.jdbc.initialSize}"/> <propertyname="minIdle"value="${platform.jdbc.minIdle}"/> <propertyname="maxActive"value="${platform.jdbc.maxActive}"/> <propertyname="maxWait"value="60000"/> <!--配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒--> <propertyname="timeBetweenEvictionRunsMillis"value="60000"/> <!--配置一个连接在池中最小生存的时间,单位是毫秒--> <propertyname="minEvictableIdleTimeMillis"value="300000"/> <propertyname="validationQuery"value="SELECT1"/> <propertyname="testWhileIdle"value="true"/> <propertyname="testOnBorrow"value="false"/> <propertyname="testOnReturn"value="false"/> <!--打开removeAbandoned功能--> <propertyname="removeAbandoned"value="true"/> <propertyname="removeAbandonedTimeout"value="1800"/> <!--1800秒,也就是30分钟--> <propertyname="logAbandoned"value="true"/> <!--打开PSCache,并且指定每个连接上PSCache的大小 mysql不使用--> <propertyname="poolPreparedStatements"value="false"/> <propertyname="filters"value="config"/> <!--<propertyname="connectionProperties"value="config.decrypt=true;config.decrypt.key=${platform.jdbc.publickey};druid.stat.slowSqlMillis=200;druid.stat.logSlowSql=true"/>--> </bean>

同样在WEB-INF的developerConfigContext.xml里配置一下数据库认证控制器:

<!--认证控制器--> <beanid="queryDatabaseAuthenticationHandler"name="primaryAuthenticationHandler"class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"> <!--<propertyname="passwordEncoder"ref="passwordEncoder"/>--> <propertyname="dataSource"ref="dataSource"/> <!--通过用户名查询密码的SQL--> <propertyname="sql"value="selectpasswordfromsys_userwhereusername=?"/> </bean>

修改authenticationHandlersResolvers,原来的是默认primaryAuthenticationHandler,这里改成queryDatabaseAuthenticationHandler,自己定义的认证控制器

<util:mapid="authenticationHandlersResolvers"> <entrykey-ref="proxyAuthenticationHandler"value-ref="proxyPrincipalResolver"/> <!--<entrykey-ref="primaryAuthenticationHandler"value-ref="primaryPrincipalResolver"/>--> <entrykey-ref="queryDatabaseAuthenticationHandler"value-ref="primaryPrincipalResolver"/> </util:map>

ok,配置就做好了,然后可以登录验证

cas自定义登录验证不连接数据库:CAS单点登录之支持数据库认证(1)

登录成功,显示页面

cas自定义登录验证不连接数据库:CAS单点登录之支持数据库认证(2)


单点登出,链接是http://127.0.0.1:8080/cas/logout

cas自定义登录验证不连接数据库:CAS单点登录之支持数据库认证(3)

猜您喜欢: