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,配置就做好了,然后可以登录验证
登录成功,显示页面
单点登出,链接是http://127.0.0.1:8080/cas/logout