Spring Security + Spring data + MongoDBによる認証

ムーディー:

MongoDBでSpringセキュリティを使用し(Springデータを使用)、Springセキュリティのために自分のデータベースからユーザーを取得したいと考えています。しかし、私のuserserviceタイプはサポートされていないようですので、それはできません。

これは私のUserServiceクラスです:

public class UserService {
    private ApplicationContext applicationContext;
    private MongoOperations mongoOperations;

    public UserService() {
        applicationContext = new AnnotationConfigApplicationContext(MongoConfig.class);
        mongoOperations = (MongoOperations) applicationContext.getBean("mongoTemplate");
    }

    public User find(String username) {
        return mongoOperations.findOne(Query.query(Criteria.where("username").is(username)), User.class);
    }
}

そして私のSecurityConfigクラス:

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Autowired
    UserService userService;

    @Autowired
    public void configAuthBuilder(AuthenticationManagerBuilder builder) throws Exception {
        builder.userDetailsService(userService); //THIS DOES NOT WORK
        builder.inMemoryAuthentication().withUser("username").password("password").roles("USER");
    }

}

私がコメントした行は言う:

The inferred type UserService is not a valid substitute for the bounded parameter <T extends UserDetailsService>.

自分のデータベースからユーザーを取得できるように、どうすれば修正できますか?

ファラジファルック:

サービス層

別の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また、実装する必要があります。これは、Springによってユーザー認証された詳細を保持するPOJOです。私が行ったように、その中にラップされたエンティティデータオブジェクトを含めることができます。

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); 
    }
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Spring Securityによる認証

分類Dev

複数の認証によるSpring Security

分類Dev

ユーザーによるSpring Security認証

分類Dev

Spring Security + Spring Sessionで認証をtrueに設定する

分類Dev

Spring SecurityとLDAP認証

分類Dev

Spring Security:認証userdaoがnull

分類Dev

Spring Session and Spring Security

分類Dev

Spring Data Rest: Security based projection

分類Dev

spring (data, mvc, security) dependencies : IncompatibleClassChangeError

分類Dev

認証後にJSON応答を返すようにSpring Securityを構成する

分類Dev

Spring BootとOAuth 2によるSpring Security

分類Dev

SpringによるRESTful認証

分類Dev

Spring SecurityおよびJavaConfigで認証するときのPartialResultException

分類Dev

FacebookAppでFacebook認証をSpring Securityに統合する

分類Dev

Spring Security認証プロセスにフックする方法は?

分類Dev

Spring SecurityでWebSocketの認証をオフにする方法は?

分類Dev

Spring Boot + Spring Security:基本認証フォームを抑制する方法

分類Dev

spring-data-mongodbがmongodb認証例外を与える

分類Dev

Maven:Spring 4 + Spring Security

分類Dev

SortBy Spring Data MongoDb

分類Dev

RestTemplateを使用したSpring Security認証

分類Dev

Spring Security Active Directory LDAP認証エラー

分類Dev

Spring Security WebFlux-認証付きの本体

分類Dev

Spring Security 5.1.1Spring-security-oauth2認証サーバーに接続するOAuth2クライアント

分類Dev

認証なしでSwagger URLにアクセスできるようにSpring Securityを構成する方法

分類Dev

spring-data-mongodbによる監査

分類Dev

Spring security and spring data : secure access to data that doesn't belong to the current user

分類Dev

Spring WebFlux Securityで複数の認証方法を実装するにはどうすればよいですか?

分類Dev

Spring Boot RestTempalte Call(Get Data)with Security Handel

Related 関連記事

  1. 1

    Spring Securityによる認証

  2. 2

    複数の認証によるSpring Security

  3. 3

    ユーザーによるSpring Security認証

  4. 4

    Spring Security + Spring Sessionで認証をtrueに設定する

  5. 5

    Spring SecurityとLDAP認証

  6. 6

    Spring Security:認証userdaoがnull

  7. 7

    Spring Session and Spring Security

  8. 8

    Spring Data Rest: Security based projection

  9. 9

    spring (data, mvc, security) dependencies : IncompatibleClassChangeError

  10. 10

    認証後にJSON応答を返すようにSpring Securityを構成する

  11. 11

    Spring BootとOAuth 2によるSpring Security

  12. 12

    SpringによるRESTful認証

  13. 13

    Spring SecurityおよびJavaConfigで認証するときのPartialResultException

  14. 14

    FacebookAppでFacebook認証をSpring Securityに統合する

  15. 15

    Spring Security認証プロセスにフックする方法は?

  16. 16

    Spring SecurityでWebSocketの認証をオフにする方法は?

  17. 17

    Spring Boot + Spring Security:基本認証フォームを抑制する方法

  18. 18

    spring-data-mongodbがmongodb認証例外を与える

  19. 19

    Maven:Spring 4 + Spring Security

  20. 20

    SortBy Spring Data MongoDb

  21. 21

    RestTemplateを使用したSpring Security認証

  22. 22

    Spring Security Active Directory LDAP認証エラー

  23. 23

    Spring Security WebFlux-認証付きの本体

  24. 24

    Spring Security 5.1.1Spring-security-oauth2認証サーバーに接続するOAuth2クライアント

  25. 25

    認証なしでSwagger URLにアクセスできるようにSpring Securityを構成する方法

  26. 26

    spring-data-mongodbによる監査

  27. 27

    Spring security and spring data : secure access to data that doesn't belong to the current user

  28. 28

    Spring WebFlux Securityで複数の認証方法を実装するにはどうすればよいですか?

  29. 29

    Spring Boot RestTempalte Call(Get Data)with Security Handel

ホットタグ

アーカイブ