【已解决】SpringBoot整合security账号密码正确却提示错误

【已解决】SpringBoot整合security账号密码正确却提示错误

一:引言

SpringSecurity的密码校验并不是直接使用原文进行比较,而是使用加密算法将密码进行加密(更准确地说应该进行Hash处理,此过程是不可逆的,无法解密),最后将用户提供的密码以同样的方式加密后与密文进行比较。对于我们来说,用户提供的密码属于隐私信息,直接明文存储并不好,而且如果数据库内容被窃取,那么所有用户的密码将全部泄露,这是我们不希望看到的结果,我们需要一种既能隐藏用户密码也能完成认证的机制,而Hash处理就是一种很好的解决方案,通过将用户的密码进行Hash值计算,计算出来的结果无法还原为原文,如果需要验证是否与此密码一致,那么需要以同样的方式加密再比较两个Hash值是否一致,这样就很好的保证了用户密码的安全性。
在这里插入图片描述
我们这里使用的是SpringSecurity提供的BCryptPasswordEncoder,至于加密过程,这里不做深入讲解。

现在,我们可以尝试使用此账号登录,在登录后,就可以随意访问我们的网站内容了。

二:使用数据库认证

前面我们已经实现了直接认证的方式,那么如何将其连接到数据库,通过查询数据库中的内容来进行用户登录呢?

首先我们需要将加密后的密码添加到数据库中作为用户密码:

public class MainTest {

    @Test
    public void test(){
        BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
        System.out.println(encoder.encode("123456"));
    }
}

三:错误原因:

我们的SpringSecurity的密码校验并不是直接使用原文进行比较,而是使用加密算法将密码进行加密(更准确地说应该进行Hash处理,此过程是不可逆的,无法解密),最后将用户提供的密码以同样的方式加密后与密文进行比较。
简而言之:我们验证的密码是比较该密码加密后和数据库存储密文是否一样。

解决方法

将密码进行加密后,存储到数据库,比如123456,加密后成字符串,存入数据库,之后再进行身份验证的时候,直接密码直接输入123456即可

MD5解密网址点我跳转

Spring Boot整合TOTP Starter(Time-Based One-Time Password,基于时间的一次性密码)通常是指在Spring Boot项目中集成Google Authenticator等库,以便实现双因素认证(2FA)。TOTP是一种安全的身份验证机制,通过生成每30秒更新一次的六位验证码,增加了应用的安全性。 在Spring Boot中,你可以通过添加相关的依赖项(如`spring-boot-starter-security`和`java-totp`或`auth0-spring-boot-starter`),配置OAuth2客户端或者使用专门的库如`spring-security-oauth2-client-totp`来启用TOTP功能。一旦配置好,用户需要在登录时除了提供常规账号密码外,还需要输入手机接收到的验证码。 以下是简单的步骤: 1. 添加Maven或Gradle依赖: ```xml <!-- Maven --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>com.auth0</groupId> <artifactId>java-jwt</artifactId> </dependency> <!-- Gradle --> implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'com.auth0:java-jwt' ``` 2. 配置客户端和TOTP设置: - 在application.properties或application.yml文件中添加相关配置 ```yaml security.oauth2.client.registration.google.client-id=<your-client-id> security.oauth2.client.registration.google.client-secret=<your-client-secret> security.oauth2.client.registration.google.totp-secret=your-totp-secret ``` 3. 创建受保护的REST端点并进行身份验证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

君问归期魏有期

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值