Spring Security AuthenticationProvider - расширяет аутентификацию - PullRequest
0 голосов
/ 31 августа 2018

У нас есть пользовательский тип пользователя для приложения, поэтому мы не хотим использовать

@Override
public Authentication authenticate(Authentication authentication) {
    String name = authentication.getName();

в нашем

public EmployeeAuthenticationProvider implements AuthenticationProvider {

но, поскольку у нас разные имена для входящих параметров POST, например

@Override
public Authentication authenticate(Authentication authentication) {
    String employeeName = authentication.getEmployeeName();
    String employeePassword = authentication.getEmployeePassword();

, поскольку мы используем пользовательский компонент Employee для пользователей приложения.

Можно ли продлить Аутентификацию и заменить ее в методе аутентификации? Должен ли наш EmployeeServiceImplementation реализовывать также org.spring.security.core.Authentication или она должна быть реализована в нашем bean-компоненте Employee (это будет немного разочаровывать)? Я немного запутался в том, как решить эту проблему.

Спасибо за вашу помощь.

EDIT

Согласно этому великому POST Spring получите пользовательские детали UserDetails в SecurityContextHolder У меня сейчас

class EmployeeUserDetailsService implements UserDetailsService {

и

class EmployeeUserDetails extends Employee implements UserDetails, Authentication{

Теперь у меня есть класс

class EmployeeAuthenticationProvider implements AuthenticationProvider {

и я хочу изменить метод

 org.springframework.security.authentication.AuthenticationProvider#authenticate(Authentication authentication)

, поэтому я могу использовать EmployeeUserDetails вместо Authentication?

1 Ответ

0 голосов
/ 31 августа 2018

Вы не можете изменить сигнатуру метода, но вы можете установить EmployeeUserDetails внутри объекта Authentication, возвращаемого из метода authenticate. Вы можете сделать это, используя метод setDetails объекта Authentication

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