Spring Security2、如何修改默认的账号密码
在启动项目时,security会自动生成密码,用户名也是固定的。
这样我们每次都要去复制密码,这个有点麻烦啊。
那么我们要怎么修改成自己的呢?
在使用SpringBoot时我们在引入依赖时,如果需要修改一些自动装载的默认配置,我们立刻就创建一个对应的配置类,那么security也不例外,我们直接创建一个配置类 SecurityConfig.java
。
至于 SecurityConfig
要如何配置呢,可以到 Spring Security 官网去瞅瞅。
下面的代码是根据官网给出的例子,进行测试了正常的。
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
/**
* Security配置类,会覆盖yml配置文件的内容
*
* @author lixingwu
*/
@EnableWebSecurity
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication()
// 定义加密方式,不然启动不了
.passwordEncoder(new BCryptPasswordEncoder())
// 设置用户名
.withUser("admin")
// 设置密码(密文密码)
.password(new BCryptPasswordEncoder().encode("123456"))
// 设置角色,不设置启动不了
.roles("");
}
}
在配置类中,我是设置了一个用户,他的用户名为 admin
密码为 123456
,这样的话,我们就可以使用自己定义的账号密码来登录了。
现在我们已经把默认的账号密码修改了,以后登录就可以使用我们设置的账号密码了。
因为我们设置了自定义的账号密码,默认的账号user也就失效了,控制台也不会打印密码了。
说明:
(1)创建的配置类要继承 WebSecurityConfigurerAdapter 类。
(2)使用@EnableWebSecurity注解来启用Security,不然配置不会生效。
(3)WebSecurityConfigurerAdapter 中的configure方法有多个,要重写参数是AuthenticationManagerBuilder的这一个。
(4)密码的加密方式要统一,不然输入的明文加密后和设置的密文不一致,导致登录不了,一般我们就用BCryptPasswordEncoder,没有特殊需要就用这个。
(5)用户角色我们现在先设置为空,不然启动不了,后面授权需要我们再设置。
spring security系列文章请 点击这里 查看。
这是代码 码云地址 。
注意注意!!!项目是使用分支的方式来提交每次测试的代码的,请根据章节来我切换分支。