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系列文章请 点击这里 查看。
这是代码 码云地址
注意注意!!!项目是使用分支的方式来提交每次测试的代码的,请根据章节来我切换分支。

posted @ 2020-07-10 21:19  喵喵扑  阅读(3509)  评论(0编辑  收藏  举报