BCryptPasswordEncoder 判断密码是否相同

版权声明:本文为博主原创文章,转载注明出处。 https://blog.csdn.net/Adonis_D_Gogh/article/details/79975526

1、问题描述

在使用Spring Security的过程中,涉及到登录时密码验证问题,以及更改密码时验证原密码问题。

2、解决办法

在这两种情况下想要判断输入密码与数据库中密码(已加密)是否相同,需要使用它自带的比较方法。

源码如下

BCryptPasswordEncoder 类 中的matches方法


3、使用方法

代码如下:(点击图片可放大)


 matches(CharSequence rawPassword, String encodedPassword)    方法中前一个参数为前端传来的值(例如123),后一个为数据库中需要对比的值(已加密存入数据库的密码)

——————————————分割线—— 补充 ————————————————

BCryptPasswordEncoder 类


BCRYPT_PATTERNPattern类的一个实例

Pattern类在java.util.regex包中;此包中主要有两个类:PatternMatcher

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("错误,不是由数字组成的"); 
}

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页