#java #spring #spring-boot #kotlin #spring-security
#java #весна #весенняя загрузка #kotlin #spring-безопасность
Вопрос:
Я не могу автоматически подключить экземпляр Spring Framework AuthenticationProvider в моем классе SecurityConfig. Это странно, поскольку я включил необходимый импорт, и UserDetailsService (другой класс Spring Framework) может быть автоматически подключен без каких-либо проблем. Это мой код:
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.security.authentication.AuthenticationProvider
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity
import org.springframework.security.config.annotation.web.builders.HttpSecurity
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter
import org.springframework.security.core.userdetails.UserDetailsService
import org.springframework.security.web.authentication.RememberMeServices
import org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices
@Configuration
@EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true)
class SecurityConfig : WebSecurityConfigurerAdapter() {
companion object {
private const val REMEMBER_ME_KEY = "basdrwerdadev$#@safasfewrahl"
}
@Autowired private lateinit var authenticationProvider: AuthenticationProvider
@Autowired private lateinit var userDetailsService: UserDetailsService
...
Может быть, мне не хватает зависимости? Я добавил зависимость безопасности Spring
Ответ №1:
Первые 2 вещи, которые я бы проверил:
i) является ли ваш пользовательский поставщик аутентификации аннотированным как сервис / компонент (т. Е. Может ли spring видеть и управлять им?)
ii) Расширяет ли он интерфейс AuthenticationManager spring?
Комментарии:
1. Мой поставщик аутентификации не является пользовательским. Я использую тот, который предоставлен Spring.
2. AuthenticationProvider от Spring — это интерфейс, предоставляемый Spring, который вы можете реализовать с помощью своей собственной пользовательской логики. Я бы попробовал изменить AuthenticationProvider на любую из различных реализаций, предоставляемых spring. Если это сработает, вы можете выбрать тот, который лучше всего подходит для вашего проекта, или даже реализовать интерфейс самостоятельно