Spring Security:如何更改默认用户和密码?

Posted

技术标签:

【中文标题】Spring Security:如何更改默认用户和密码?【英文标题】:Spring Security: How to change default user and password? 【发布时间】:2018-01-15 08:16:35 【问题描述】:

我的 pom.xml 中有 Spring Security,Spring Security 自动配置了默认用户和生成的密码:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

如何更改默认用户和密码?

【问题讨论】:

假设这个post 可能会有所帮助,并为您的期望提供解决方案。 What is username and password when starting Spring Boot with Tomcat?的可能重复 【参考方案1】:

这是straight from the docs:

创建一个配置类:

@Configuration
@EnableWebSecurity
public class HelloWebSecurityConfiguration
   extends WebSecurityConfigurerAdapter 

  @Autowired
  public void configureGlobal(AuthenticationManagerBuilder auth) 
    auth
      .inMemoryAuthentication()
        .withUser("user").password("password").roles("USER");
  

Newer Docs

这有点不同,但效果是一样的:

@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter 

    @Bean
    public UserDetailsService userDetailsService() throws Exception 
        InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();
        manager.createUser(User.withUsername("user").password("password").roles("USER").build());
        return manager;
    

【讨论】:

2013 年 7 月 3 日旧文档:'( 我刚刚用 1.5.6 成功地做到了。【参考方案2】:

这可以在您的 application.properties 文件中轻松完成:

spring.security.user.name=user # Default user name.
spring.security.user.password= # Password
spring.security.user.role= # A comma separated list of roles

这里是documentation。

【讨论】:

这在使用Spring Boot 2.2.2.RELEASE和安全依赖时不起作用,我们需要实现configure(...)并扩展WebSecurityConfigurerAdapter【参考方案3】:
#add these lines in application.properties
    spring.security.user.name=username
    spring.security.user.password=password

【讨论】:

【参考方案4】:

application.properties中添加以下属性

spring.security.user.name= user_name
spring.security.user.password= user_password

其中“user_name”是用户,“user_password”是密码。

【讨论】:

【参考方案5】:

这些不适用于旧版本的 spring boot,我使用的是 1.5.11.RELEASE 并且这些属性不起作用,移动到 2.1.8.RELEASE 后,这些属性可以正常工作。

检查你的 pom.xml

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.8.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

spring.security.user.name=username
spring.security.user.password=password

【讨论】:

以上是关于Spring Security:如何更改默认用户和密码?的主要内容,如果未能解决你的问题,请参考以下文章

作为管理员,如何使用 Grails Spring Security 以编程方式更改用户密码?

登录时更改spring security中的用户名

强制用户在 Spring Security 中更改过期密码

如何通过上下文更改 Spring Security 角色?

spring security 改变 spring_security_login 表单

Spring Security教程:自定义表结构