1、问题描述
在使用Spring Security的过程中,涉及到登录时密码验证问题,以及更改密码时验证原密码问题。
2、解决办法
在这两种情况下想要判断输入密码与数据库中密码(已加密)是否相同,需要使用它自带的比较方法。
源码如下
BCryptPasswordEncoder 类 中的matches方法
3、使用方法
代码如下:(点击图片可放大)
matches(CharSequence rawPassword, String encodedPassword) 方法中前一个参数为前端传来的值(例如123),后一个为数据库中需要对比的值(已加密存入数据库的密码)
——————————————分割线—— 补充 ————————————————
BCryptPasswordEncoder 类
BCRYPT_PATTERN是Pattern类的一个实例
Pattern类在java.util.regex包中;此包中主要有两个类:Pattern、Matcher。
Pattern 类
声明:public final class Pattern implements java.io.Serializable
含义:模式类,正则表达式的编译表示形式。
注意:此类的实例是不可变的,可供多个并发线程安全使用。
Matcher 类
Matcher 类中的matches方法:
boolean matches() 最常用方法:尝试对整个目标字符展开匹配检测,也就是只有整个目标字符串完全匹配时才返回真值.
Pattern和Matcher具体的用法
//判断是否是数字.括号里可填其他正则表达式;
Pattern p = Pattern.compile("\\d+");
//需要要判断的字符串;
Matcher m = p.matcher("1234567");
if(m.matches()) {
System.out.println("正确,是由数字组成的");
}else {
System.out.println("错误,不是由数字组成的");
}
————————————————
版权声明:本文为CSDN博主「Adonis_D_Gogh」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Adonis_D_Gogh/article/details/79975526