SpringSecurity6 | 修改默认用户
在Spring Security中,默认的用户名是user
。如果你想修改这个默认用户名,你可以通过实现UserDetailsService
接口来自定义用户详情的加载逻辑。
下面是一个简单的例子,展示如何修改默认用户名:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.provisioning.InMemoryUserDetailsManager;
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
// 使用内存中的用户
auth.inMemoryAuthentication()
.withUser(userDetails())
.password("{noop}password"); // 密码明文存储,仅用于示例
}
@Bean
public UserDetailsService userDetailsService() {
// 创建一个新的UserDetailsService实现
return username -> {
if ("custom-user".equals(username)) {
return User.withDefaultPasswordEncoder()
.username("custom-user")
.password("password")
.roles("USER")
.build();
}
return null; // 其他用户名的情况下返回null,表示用户不存在
};
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin();
}
@Bean
public UserDetails userDetails() {
// 自定义默认用户
return User.withDefaultPasswordEncoder()
.username("custom-user") // 修改默认用户名为"custom-user"
.password("password")
.roles("USER")
.build();
}
}
在这个配置中,我们通过userDetailsService()
方法提供了一个自定义的UserDetailsService
实现,在这个实现中,我们检查传入的用户名是否是我们想要的默认用户名custom-user
。如果是,我们返回一个新
评论已关闭