Spring Security框架配置及使用


前言

Spring Security 是一个功能强大且高度可定制的身份验证和访问控制框架。它是保护基于 Spring 的应用程序的事实标准。

Spring Security 是一个专注于为 Java 应用程序提供身份验证和授权的框架。像所有 Spring 项目一样,Spring Security 的真正强大之处在于它可以轻松扩展以满足自定义需求。

一、Spring Security是什么?

Spring Security主要解决了认证和授权相关的问题。

认证:验证用户提交的登录信息,判断是否可以通过。

授权:当认证通过后,给予通过认证的用户一些信息,后续,将根据这些信息来判断此用户是否允许执行某些访问。

二、使用步骤

1.添加依赖

在项目的pom文件中添加下面这段依赖:

<!-- Spring Boot Security,用于处理认证与授权 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

2.测试使用

这里我们会用到其中的一个算法用于测试:

BCrypt算法是一种基于哈希算法的算法,所以,这种算法也是不可逆的!

通过BCrypt算法进行编码后的结果,长度固定为60字符。

使用同一个原文进行反复编码,每次得到的结果都是不同的,因为在编码过程中,BCrypt使用了随机的盐,并且,使用的盐也作为编码结果的一部分保存了下来。

在开发实现中,通常,可以使用配置类中的`@Bean`方法来创建`BCryptPasswordEncoder`对象,此对象将是由Spring进行管理的,当需要使用时,自动装配即可,例如:

代码如下(示例):

@Slf4j
@SpringBootTest
public class BCryptTest {

    @Test
    public void testBcrypt(){
        String password="123456";
        BCryptPasswordEncoder bshScriptEvaluator=new BCryptPasswordEncoder();
        String encodedPassword=bshScriptEvaluator.encode(password);
        log.info("原文密码{},密文密码{}",password,encodedPassword);
    }
}

3.运行结果

我们可以使用循环语句来看多次说出的结果:

4.密码匹配测试

@Test
    public void testMatches() {
        String rawPassword = "123456";
        String encodedPassword = "$2a$10$7XYJc3DSotqjZ4Z6ZFpQ7OIdLQIWc8s2ATh5bSFPKq6dVUwHRlRly";
        BCryptPasswordEncoder bshScriptEvaluator=new BCryptPasswordEncoder();
        boolean matches = bshScriptEvaluator.matches(rawPassword, encodedPassword);
        log.info("原文={},密文={},匹配结果={}", rawPassword, encodedPassword, matches);
    }

我们用之前生成的密文密码用来与原文密码进行匹配,看看是否能够匹配成功呢?

总结

Spring Security框架是目前认证和授权的主流应用框架,用以划分用户管理员权限,自身也提供BCrypt算法用于密码的加密处理和Matches方法用于密码匹配,并且这种算法更加安全。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值