我是靠谱客的博主 清爽冰棍,最近开发中收集的这篇文章主要介绍单点登录 CAS 5.* - 从数据库获取用户信息 - 4 单点登录 CAS 5.* - 从数据库获取用户信息 - 4 ,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
单点登录 CAS 5.* - 从数据库获取用户信息 - 4
前面演示的项目 都是使用的固定用户,现在,可以尝试从数据库获取用户+密码尝试登录,
创建表和数据:
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`user_name` varchar(255) DEFAULT NULL,
`password` varchar(255) DEFAULT NULL,
`age` int(4) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- 除了小明是明文 其他的都是MD5加密过的 密码均是123456
INSERT INTO `user`( `name`, `user_name`, `password`, `age`) VALUES ( '管理员', 'admin', 'e10adc3949ba59abbe56e057f20f883e', 5);
INSERT INTO `user`( `name`, `user_name`, `password`, `age`) VALUES ( '小明', 'xiaoming', '123456', 10);
INSERT INTO `user`( `name`, `user_name`, `password`, `age`) VALUES ( '小红', 'xiaohong', 'e10adc3949ba59abbe56e057f20f883e', 25);
pom.xml增加jar包
<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 文件,增加
#数据源信息
cas.authn.jdbc.query[0].url=jdbc:mysql://127.0.0.1:3306/cas?useSSL=false&useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true
cas.authn.jdbc.query[0].user=root
cas.authn.jdbc.query[0].password=123456
cas.authn.jdbc.query[0].sql=select * from user where user_name=?
cas.authn.jdbc.query[0].fieldPassword=password
cas.authn.jdbc.query[0].driverClass=com.mysql.jdbc.Driver
然后启动测试server 就不启动client测试了,尝试下xiaoming 123456 明文密码进行登录
登陆成功,但是一般数据库密码都不会明文存储,cas提供了MD5,salt等加密方式,并且支持自定义密码校验。现在尝试一下MD5,首先 application.properties中继续增加
#配置密码加密方式
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
重启server 使用xiaoming便不会登录成功,其他两个测试账号则可以成功登录
自定义密码加密方式解密,增加自己的解密工具类 MyPasswordEncoder.java 当然只是随便写了写,校验一下明文密码
package com.xpsd.cloud.security;
import org.springframework.security.crypto.password.PasswordEncoder;
/**
* @Author: L.swallow
* @Date: 2019/1/15 17:39
*/
public class MyPasswordEncoder implements PasswordEncoder {
/**
* 对输入的密码加密过程
*/
@Override
public String encode(CharSequence charSequence) {
return charSequence.toString();
}
/**
* 密码校验过程
*/
@Override
public boolean matches(CharSequence inputPwd, String dbPwd) {
if(dbPwd.contentEquals(inputPwd)){
return true;
}
return false;
}
}
修改配置文件:application.properties
#配置密码加密方式
#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
#自定义密码加密方式
cas.authn.jdbc.query[0].passwordEncoder.type=com.xpsd.cloud.security.MyPasswordEncoder
cas.authn.jdbc.query[0].passwordEncoder.characterEncoding=UTF-8
明文密码的只有小明,就拿小明试试吧。然后就又登陆成功啦!
posted @
2019-01-14 18:18
LewsKay 阅读(
...) 评论(
...)
编辑
收藏
最后
以上就是清爽冰棍为你收集整理的单点登录 CAS 5.* - 从数据库获取用户信息 - 4 单点登录 CAS 5.* - 从数据库获取用户信息 - 4 的全部内容,希望文章能够帮你解决单点登录 CAS 5.* - 从数据库获取用户信息 - 4 单点登录 CAS 5.* - 从数据库获取用户信息 - 4 所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复