Cas5.3.14密码自定义校验(三)

1.在application配置文件中加入如下配置,就可以进行简单的MD5进行加密验证了:

#加md5策略
#进行自定义加密需要在spring.factories里面加上你写的路径即可
cas.authn.jdbc.query[0].passwordEncoder.characterEncoding=UTF-8
#可以进行MD5加密
cas.authn.jdbc.query[0].passwordEncoder.encodingAlgorithm=MD5

2.同时也可以进行自定义的密码写法,在pom里面引入下面的jar:

                <!-- 自定义验证MD5密码 -->
                <dependency>
                    <groupId>org.springframework.security</groupId>
                    <artifactId>spring-security-core</artifactId>
                    <version>5.3.3.RELEASE</version>
                </dependency>

3.在cas项目添加自己的文件夹,创建一个calss文件:

加入如下代码:

import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.crypto.hash.SimpleHash;
import org.apache.shiro.util.ByteSource;
import org.springframework.security.crypto.password.PasswordEncoder;

import java.math.BigInteger;
import java.security.MessageDigest;
import java.util.UUID;
//不一定得是实现这个PasswordEncoder,有很多方式
public class Autopassword implements PasswordEncoder {
    /**
     * 自定义密码加密该写的位置
     * @param charSequence
     * @return
     */
    @Override
    public String encode(CharSequence charSequence) {
        try {
            System.out.println("获取的密码为:"+charSequence);
            //对数据进行md5加密
            MessageDigest md = MessageDigest.getInstance("MD5");
            md.update(charSequence.toString().getBytes());
            String pwd = new BigInteger(1, md.digest()).toString(16);//进行md5  16位的加密

            System.out.println("进行了一次md5加密:"+pwd);

            Object result = null;//加密完成后的结果

            String hashMD5 = "MD5";//加密方式
            Object salt = ByteSource.Util.bytes(pwd);//以MD5将密码加密一次后作为加盐的方式
            Object requestpwd = charSequence;//用户输入密码
            System.out.println("用户输入的密码为:"+requestpwd);
            String addpwd = String.valueOf(requestpwd);
            int addsaltcount = 2;//加密两次

            result = new SimpleHash(hashMD5,addpwd,salt,addsaltcount);

            String strresult = String.valueOf(result);//将密码转化成字符串类型
            return strresult;
        } catch (Exception e) {
            //logger.error("对密码进行md5异常",e);
            System.out.println("加密异常!");
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 判断密码是否匹配
     * @param charSequence 加密好的密码
     * @param s 是输入的用户账号密码
     * @return
     */
    @Override
    public boolean matches(CharSequence charSequence, String s) {
        // 判断密码为空,直接返回false
        if (StringUtils.isBlank(charSequence)) {
            return false;
        }

        //调用上面的encode 对请求密码进行MD5处理
        String pass = this.encode(charSequence);
        
        //比较密码是否相等
        return pass.equals(s);
    }
}

修改application原来的md5加密方式,修改如下:

#加md5策略
#进行自定义加密需要在spring.factories里面加上你写的路径即可
#进行自定义校验密码
cas.authn.jdbc.query[0].passwordEncoder.type=org.hc.cas.Autopassword
cas.authn.jdbc.query[0].passwordEncoder.characterEncoding=UTF-8
#可以进行MD5加密
#cas.authn.jdbc.query[0].passwordEncoder.encodingAlgorithm=MD5

然后就可以使用自定义的密码校验的方式进行验证了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值