SpringSecurity6 | 修改默认用户
字数: 0 字 时长: 0 分钟
学习参考 :
1.前言
大家好,我是Leo哥🫣🫣🫣,接到上一节,我们学习了SpringSecurity默认登录用户是如何来的,也通过源码的方式去走了下整个流程。虽然通过SpringSecurity自带的用户和密码密码可以让我们进行登录并访问到我们的接口,但是你每次项目重启,系统所生成的UUID都不一样,这样会不会太麻烦了。能不能通过手动配置的方式来进行配置自定义用户的密码呢。当然可以,下面Leo哥带你通过配置文件来对他进行自定义配置。好了,话不多说让我们开始吧😎😎😎。
2.自定义配置
我们可以在 application.properties 中配置默认的用户名密码。
怎么配置呢?大家还记得上一小节我们说的 SecurityProperties,默认的用户就定义在它里边,是一个静态内部类,我们如果要定义自己的用户名密码,必然是要去覆盖默认配置,我们先来看下 SecurityProperties 的定义:
那么SecurityProperties 是怎么来的呢,当我们项目启动的时候,SpringBoot就会通过自动配置进行加载SpringSecurity所需要的一些bean。
我们可以在文件中找到关于SpringSecurity相关的自动配置类:SecurityAutoConfiguration
然后我们可以点过去看看他的具体实现。
可以看到在这个自动配置类上有一个我们熟悉的注解:@EnableConfigurationProperties
,他会去加载SecurityProperties.class。
这一下不就串上了嘛,上节课我们学习了关于SecurityProperties,当我们并没有指定用户的时候,他就会使用默认配置,默认用户名为user,密码为随机生成的UUID。
那么我们现在就可以通过spring.security配置文件进行自定义我们的用户名和密码。
这就是我们新定义的用户名密码。
在 properties 中定义的用户名密码最终是通过set 方法注入到属性中去的,这里我们顺便来看下 SecurityProperties.User#setPassword 方法:
public void setPassword(String password) {
if (!StringUtils.hasLength(password)) {
return;
}
this.passwordGenerated = false;
this.password = password;
}
从这里我们可以看到,application.yml 中定义的密码在注入进来之后,还顺便设置了 passwordGenerated 属性为 false,这个属性设置为 false 之后,控制台就不会打印默认的密码了。
最后,我们重新启动项目,注意这次看控制台就没有原来生成的UUID生成的密码了,因为我们没有使用默认配置。
然后通过自定义的用户名和密码进行登录。
发现也是可以正常进行登录的。
3.总结
以上便是本文的全部内容,本人才疏学浅,文章有什么错误的地方,欢迎大佬们批评指正!我是Leo,一个在互联网行业的小白,立志成为更好的自己。
如果你想了解更多关于Leo,可以关注公众号-程序员Leo,后面文章会首先同步至公众号。