【问题标题】:Spring boot security using userDetailsService使用 userDetailsS​​ervice 的 Spring Boot 安全性
【发布时间】:2018-01-15 03:02:41
【问题描述】:
@Service
public class UserDetService implements UserDetailsService{
@Autowired
private UserRepository userRepository;
@Override
public UserDetails loadUserByUsername(String userName) throws UsernameNotFoundException {
    User user = userRepository.findByUserName(userName);
    if(user == null){
        throw new UsernameNotFoundException(userName);
    }
    return new UserPrincipal(user);
}

}

SecConfig.java

@Configuration
@EnableWebSecurity
public class SecConfig extends WebSecurityConfigurerAdapter{
@Bean
public UserDetailsService userDetailsService(){
    return new UserDetService();
}

@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception{
    auth.userDetailsService(userDetailsService());
}
@Override
protected void configure(HttpSecurity http) throws Exception {
    http.authorizeRequests()
      .antMatchers("/hello").access("hasRole('ROLE_ADMIN')")  
      .anyRequest().permitAll()
      .and()
        .formLogin().loginPage("/login")
        .usernameParameter("username").passwordParameter("password")
      .and()
        .logout().logoutSuccessUrl("/login?logout") 
       .and()
       .exceptionHandling().accessDeniedPage("/403")
      .and()
        .csrf();
}


}

我正在学习 Spring Security,但没有人问我是否正确,这是为了确保登录身份验证安全还是我错过了什么?

我还感到困惑,我没有编写任何查询来获取用户名和密码,如何从用户输入和数据库验证用户名和密码以及验证发生在哪里?

感谢这里有这么多乐于助人的人

【问题讨论】:

    标签: spring-boot jdbc spring-security


    【解决方案1】:

    您不需要编写查询,因为如果您使用jpa,它会为您编写查询。

    这一行:User user = userRepository.findByUserName(userName);

    将使用存储库自动生成查询以检查提供的参数是否返回任何内容并在您的服务中

    if(user == null){
            throw new UsernameNotFoundException(userName);
        }
    

    如果存储库找不到用户,将抛出错误。

    希望这能回答你的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 2015-04-07
      • 2017-01-31
      • 2013-08-01
      • 1970-01-01
      • 2014-09-03
      • 2011-06-22
      相关资源
      最近更新 更多