📅  最后修改于: 2023-12-03 15:38:26.684000             🧑  作者: Mango
Spring Security 是一个基于 Spring 的安全框架,为企业应用系统提供了一套完整的安全解决方案。在默认情况下,Spring Security 会为我们提供一个内置的用户和密码,但是在实际开发中,我们往往需要更改默认用户和密码,本文将介绍如何在 Spring Security 中更改默认用户和密码。
在 Spring Security 中,我们需要创建一个配置类来进行安全配置。首先,我们需要在类上使用 @EnableWebSecurity
注解来启用 Spring Security:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
// ...
}
在安全配置类中,我们可以使用 UserDetailsService
接口或 UserDetailsManager
接口来配置用户和密码。其中,UserDetailsService
接口需要实现 loadUserByUsername
方法,该方法用于根据用户名加载用户信息。而 UserDetailsManager
接口则可以直接使用 User
类型对象来创建用户。
以下代码演示了如何通过 UserDetailsService
接口配置用户和密码:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
protected void configure(AuthenticationManagerBuilder builder) throws Exception {
builder
.userDetailsService(userDetailsService())
.passwordEncoder(passwordEncoder());
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
@Bean
public UserDetailsService userDetailsService() {
InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();
manager.createUser(User
.withUsername("username")
.password("password")
.roles("USER")
.build());
return manager;
}
}
在上面的示例中,我们使用 InMemoryUserDetailsManager
类来实现 UserDetailsService
接口,并在 userDetailsService
方法中返回该类的实例。在 configure
方法中,我们调用 userDetailsService
方法来配置用户详细信息,另外我们还使用 passwordEncoder
方法来配置密码加密方式,这里使用了 BCryptPasswordEncoder
类。
以下代码演示了如何通过 UserDetailsManager
接口配置用户和密码:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
protected void configure(AuthenticationManagerBuilder builder) throws Exception {
builder
.userDetailsManager(userDetailsManager());
}
@Bean
public UserDetailsManager userDetailsManager() {
InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();
manager.createUser(User
.withUsername("username")
.password("password")
.roles("USER")
.build());
return manager;
}
}
在上面的示例中,我们使用 InMemoryUserDetailsManager
类来实现 UserDetailsManager
接口,并在 userDetailsManager
方法中返回该类的实例。在 configure
方法中,我们调用 userDetailsManager
方法来配置用户详细信息。
在 Spring Security 中,我们可以通过 @PreAuthorize
或 @Secured
注解来对方法或 URL 进行访问控制,这里不再赘述。
通过以上步骤,我们可以在 Spring Security 中更改默认用户和密码。我们可以根据实际需求来选择使用 UserDetailsService
接口或 UserDetailsManager
接口来配置用户和密码。另外,还可以通过 PasswordEncoder
接口来配置密码加密方式。