gpt4 book ai didi

java - Spring Boot 配置 + RepositoryRestResource + 身份验证

转载 作者:太空宇宙 更新时间:2023-11-04 11:12:51 25 4
gpt4 key购买 nike

我正在尝试创建一个 Spring Boot 应用程序,它将用户/密码组合存储在 MongoDB 的用户文档中。我能够成功设置一个扩展 MongoRepository 的存储库,并且一切正常。现在,我想根据我的存储库连接到的数据源设置身份验证。有没有一种快速方法可以仅使用默认连接来执行此操作,或者我是否需要专门定义一个数据源来执行此操作?

@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.jdbcAuthentication().dataSource(dataSource);
}

这里我们应该假设定义了一个数据源,但如果我已经设置了一个 REST 存储库,那么我还没有。我在这里需要中间步骤吗?

最佳答案

我认为在这种情况下 UserDetailsS​​ervice 接口(interface)将是你最好的 friend

您必须实现 UserDetailsS​​ervice 接口(interface),并确保您的 Mongo DB 存储库已注入(inject)到您创建的 UserDetailsS​​ervice 实现中。之后,让我们实现 loadUserByUsername 方法,以返回 org.springframework.security.core.userdetails.User 对象并用 Mongo DB 用户信息填充它。

import org.springframework.security.core.userdetails.User;
@Service
public class MyUserService implements UserDetailsService {

@Autowired
MyMongoRepo myMongoRepo;

@Override
public UserDetails loadUserByUsername(String s) throws UsernameNotFoundException {
List<SimpleGrantedAuthority> dummyAuthorityForExample = Arrays.asList(new SimpleGrantedAuthority("ROLE_ADMIN"));
MyMongoUser mongoUser= myMongoRepo.findByUsername(s);
User user = new User(mongoUser.getUsername(), mongoUser.getPassword(),dummyAuthorityForExample);
return user;
}
}

最后将 UserDetailsS​​ervice 注入(inject)到您的 AuthenticationManagerBuilder

@Autowired
UserDetailsService userDetailsService;

@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService);
}

关于java - Spring Boot 配置 + RepositoryRestResource + 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45804968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com