«retrieveUser вернул null — нарушение контракта интерфейса» в безопасности Springboot при аутентификации

Я новичок в безопасности Springboot, и я пытаюсь написать функцию регистрации. Мой подход состоит в том, чтобы сохранить пользователя, а затем передать данные диспетчеру аутентификации, но он пришел сюда и возвращает значение null, и возникает вышеуказанная ошибка. сервис токенов:

      public String signup(JpaUser jpaUser) {
        System.out.println(jpaUserrepository.findByUsername(jpaUser.getUsername()));
       if(jpaUserrepository.findByUsername(jpaUser.getUsername()).isPresent())
        {return "repeated username";}
        JpaUser saveuser=jpaUserrepository.save(new JpaUser(jpaUser.getUsername(),
                passwordEncoder.encode(jpaUser.getPassword()),jpaUser.getEmail(),jpaUser.getRoles()));
        Authentication authentication= authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(
                saveuser.getUsername(),saveuser.getPassword()));
        System.out.println(authentication);
        String token=generateToken(authentication);
        System.out.println(token);
       return token;

    }

конфигурация безопасности:

      @Bean
public AuthenticationManager authenticationManager(AuthenticationConfiguration authConfig)  {
    try{System.out.println(authConfig.getAuthenticationManager());
    return authConfig.getAuthenticationManager();}catch(Exception exception){
        System.out.println(exception);
        return null;
    }
}

сгенерировать метод токена:

       public String generateToken (Authentication authentication){
        Instant now=Instant.now();
        String scope=authentication.getAuthorities().stream() //Stream<capture of ? extends GrantedAuthority >
        .map(GrantedAuthority::getAuthority)
                .collect(Collectors.joining(" "));
        JwtClaimsSet claims = JwtClaimsSet.builder()
                .issuer(authentication.getName())
                .issuedAt(now)
                .expiresAt(now.plus(1, ChronoUnit.HOURS))
                .claim("scope",scope).build();
                return this.encoder.encode(JwtEncoderParameters.from((claims))).getTokenValue();
    }

0 ответов

Другие вопросы по тегам