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

标签 java spring mongodb spring-boot

我正在尝试创建一个 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/

相关文章:

java - 下载的视频在 Android 版本 <= 6.1 上无法播放

java - Spring AMQP AcknowledgeMode.AUTO 工作缓慢

ruby-on-rails - 使用 mongomapper 执行服务器 runCommand geoNear

java - 如何替换文本中的表情符号,例如 :) with an image?

java - 使用 toString() 打印包含多个对象的 map

java - 按钮与底部对齐,从 ImageView 中隐藏

web-services - Spring Web-Service 解码不起作用

java - 更改项目结构后,RequestMapping 和 Hibernate 无法按预期工作

php - mongodb 聚合中空字段的投影

node.js - mongo-db native 客户端中的数据库连接