您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

使用Spring Security + Spring数据+ MongoDB进行身份验证

使用Spring Security + Spring数据+ MongoDB进行身份验证

您必须创建一个单独的service实现org.springframework.security.core.userdetails.UserDetailsService并将其注入AuthenticationManagerBuilder

@Component
public class SecUserDetailsService implements UserDetailsService{

    @Autowired
    private UserRepository userRepository;

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        /*Here add user data layer fetching from the MongoDB.
          I have used userRepository*/
        User user = userRepository.findByUsername(username);
        if(user == null){
            throw new UsernameNotFoundException(username);
        }else{
            UserDetails details = new SecUserDetails(user);
            return details;
        }
    }
}

UserDetails也应实施。这是POJO,它将在Spring之前保留用户身份验证的详细信息。正如我已经做过的那样,您可以将包装在其中的实体数据对象包括在内。

public class SecUserDetails implements UserDetails {

    private User user;

    public SecUserDetails(User user) {
        this.user = user;
    }
    ......
    ......
    ......
}

自动连接我们之前创建的服务,并将其设置在 AuthenticationManagerBuilder

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Autowired
    SecUserDetailsService userDetailsService ;

    @Autowired
    public void configAuthBuilder(AuthenticationManagerBuilder builder) throws Exception {
        builder.userDetailsService(userDetailsService); 
    }
}
mongodb 2022/1/1 18:26:55 有326人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶