返回介绍

5.4 实战

发布于 2025-04-26 13:16:45 字数 1332 浏览 0 评论 0 收藏

首先创建一个普通的 Spring Boot 工程,并引入 spring-boot-starter-security 依赖。

创建一个测试接口/hello,代码如下:

    @RestController
    public class HelloController {
       @GetMapping("/hello")
       public String hello() {
           return "hello";
       }
    }

为了测试方便,我们首先在单元测试中执行如下代码,生成一段加密字符串(读者可以多次执行该方法,会发现相同的明文每次生成的密文都不相同,这也是 BCryptPasswordEncoder 的便捷之处):

    @Test
    void contextLoads() {
       BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
       System.out.println(encoder.encode("123"));
    }

接下来自定义 SecurityConfig 类:

(1)首先我们将一个 BCryptPasswordEncoder 实例注册到 Spring 容器中,这将代替默认的 DelegatingPasswordEncoder。

(2)在定义用户时,设置的密码字符串就是前面单元测试方法执行生成的加密字符串。

配置完成后,启动项目。项目启动成功后,我们就可以使用 javaboy/123 进行登录了。

另一方面,由于默认使用的是 DelegatingPasswordEncoder,所以也可以不配置 PasswordEncoder 实例,只在密码前加上前缀:

如果我们不提供 PasswordEncoder 实例的话,默认使用的就是 DelegatingPasswordEncoder,所以需要给加密字符串加上前缀{bcrypt},同时再添加一个新用户,新用户的密码是{noop}123,这个表示密码明文存储,密码就是 123。

配置完成后,再次重启项目,此时我们就可以使用 javaboy/123 和江南一点雨/123 两个用户进行登录了。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。