Я получаю сообщение об ошибке при создании настраиваемой конфигурации безопасности при весенней загрузке - PullRequest
0 голосов
/ 13 марта 2020

ConfigServletWebServerApplicationContext: Возникла исключительная ситуация во время инициализации контекста - отмена refre sh попытка: org.springframework.beans.factory.UnsatisfiedDependencyException: ошибка создания бина с именем «securityConfig»: неудовлетворенная зависимость, выражаемая через читателя; вложенное исключение: org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем readerRepository: сбой вызова метода init; вложенное исключение: java .lang.IllegalArgumentException: неуправляемый тип: класс java .io.Reader

package com.example.readinglist;

import java.io.Reader;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.stereotype.Repository;

@Repository
public interface ReaderRepository extends JpaRepository<Reader, String> {

    UserDetails findOne(String username);

}

ReadingListApplication:

package com.example.readinglist;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ReadinglistApplication {

    public static void main(String[] args) {
        SpringApplication.run(ReadinglistApplication.class, args);
    }

}

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

package com.example.readinglist;

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter{

    @Autowired
    private ReaderRepository readerRepository;


    @Override
    protected void configure(HttpSecurity http) throws Exception{

        http.authorizeRequests()
        .antMatchers("/")
        .access("hasRole('Reader')")
        .antMatchers("/**").permitAll().and().formLogin().loginPage("/login")
        .failureUrl("/login?error=true");
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {

        auth.userDetailsService(new UserDetailsService(){

            @Override
            public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
                return readerRepository.findOne(username);
            }
        });
    }
}

Ответы [ 3 ]

1 голос
/ 13 марта 2020

Вы импортировали неправильную сущность Reader -> Вы импортировали "import java .io.Reader;" Вам необходимо импортировать свой собственный класс сущности Reader.

0 голосов
/ 13 марта 2020

Ваша декларация хранилища неверна. Это должно быть:

public interface ReaderRepository extends JpaRepository<<Name of your entity>, String> {

если имя вашей сущности Reader вы импортировали неправильный класс

0 голосов
/ 13 марта 2020

Я думаю, readerRepository.findOne(username) не возвращает объект UserDetails. Если это так, вы должны создать новый объект UserDetails на основе информации в объекте Reader и вернуть его

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...