spring boot 的安全配置
security configuration with spting boot
我是 Spring 的新人
有人可以向我解释这两种方法(loadUserByUsername 和 configure)的作用吗?
我正在尝试了解 spring 安全性
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.authenticationProvider(myAuthenticationProvider);
}
@Override
public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException {
UserBuilder builder = null;
User user = userRepository.findByEmail(email);
if (user==null) {
throw new UsernameNotFoundException(email);
}else{
builder = org.springframework.security.core.userdetails.User.withUsername(email);
builder.password(user.getPassword());
builder.roles(user.getRole());
}
return builder==null ? null : builder.build();
}
}
UserDetailsService
bean 被 DaoAuthenticationProvider
用来检索用户信息以便对他们进行身份验证。它是 Spring Security.
中的一个核心接口
configure(AuthenticationManagerBuilder auth)
方法可用于将生成的 AuthenticationManager
作为 bean 公开。你可以这样做:
@Override
protected void configure(AuthenticationManagerBuilder auth) {
auth
// enable in memory based authentication with a user named
// "user" and "admin"
.inMemoryAuthentication().withUser("user").password("password").roles("USER").and()
.withUser("admin").password("password").roles("USER", "ADMIN");
}
不过,您可以通过以下方式实现与上述相同的效果:
@Bean
UserDetailsService userDetailsService() {
UserDetails user = User.withDefaultPasswordEncoder().username("test").password("password")
.roles("ROLE_USER").build();
return new InMemoryUserDetailsManager(user);
}
请注意 WebSecurityConfigurerAdapter
class has been deprecated 在 Spring Security 5.7.0-M2 中,因此不再推荐使用。博客 post 提供了更多详细信息。
我是 Spring 的新人 有人可以向我解释这两种方法(loadUserByUsername 和 configure)的作用吗? 我正在尝试了解 spring 安全性
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.authenticationProvider(myAuthenticationProvider);
}
@Override
public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException {
UserBuilder builder = null;
User user = userRepository.findByEmail(email);
if (user==null) {
throw new UsernameNotFoundException(email);
}else{
builder = org.springframework.security.core.userdetails.User.withUsername(email);
builder.password(user.getPassword());
builder.roles(user.getRole());
}
return builder==null ? null : builder.build();
}
}
UserDetailsService
bean 被 DaoAuthenticationProvider
用来检索用户信息以便对他们进行身份验证。它是 Spring Security.
configure(AuthenticationManagerBuilder auth)
方法可用于将生成的 AuthenticationManager
作为 bean 公开。你可以这样做:
@Override
protected void configure(AuthenticationManagerBuilder auth) {
auth
// enable in memory based authentication with a user named
// "user" and "admin"
.inMemoryAuthentication().withUser("user").password("password").roles("USER").and()
.withUser("admin").password("password").roles("USER", "ADMIN");
}
不过,您可以通过以下方式实现与上述相同的效果:
@Bean
UserDetailsService userDetailsService() {
UserDetails user = User.withDefaultPasswordEncoder().username("test").password("password")
.roles("ROLE_USER").build();
return new InMemoryUserDetailsManager(user);
}
请注意 WebSecurityConfigurerAdapter
class has been deprecated 在 Spring Security 5.7.0-M2 中,因此不再推荐使用。博客 post 提供了更多详细信息。