2015-06-09 2 views
1

Я передаю имя пользователя и пароль из клиентского приложения через json-объект, и я использую UsernamePasswordAuthenticationFilter для аутентификации пользователя, как предложено в ответе https://stackoverflow.com/a/19572145/4070142 вопроса Spring Security and JSON Authentication.Где я могу установить проверку подлинности весной UsernamePasswordAuthenticationFilter?

Вопрос в том, где я могу поставить проверку подлинности? Я имею в виду, где я могу поставить if(username.equals("user123")&&password.equals("password123")) {return true;}

Для кода см. Ответ https://stackoverflow.com/a/19572145/4070142 вышеуказанного вопроса.

+0

У вас нет. Это то, что весенняя безопасность делает для вас, –

+0

Да, Thats true, Но где-то нам нужно настроить, как в теге в файле конфигурации. Итак, если я поместил вручную действительные учетные данные пользователя в тег , то как мне связать его с тегами пользовательского фильтра ? – doga

+0

Вы даете ему псевдоним и вводите его в свой фильтр. Хотя я бы не пошел на решение, которое у вас есть в другой теме. Я также не связываюсь с этой нитью, но предоставляю всю информацию здесь, не очень приятно иметь людей, которые хотят помочь вам щелкнуть, чтобы получить всю информацию. –

ответ

0

Фактическое сопоставление имени пользователя и пароля происходит у поставщика аутентификации. UsernamePasswordAuthenticationFilter получает имя пользователя/pwd и переходит к authenticationManager, который inturn делегирует его аутентификацииProvider. В вашем случае, вам нужно добавить пользовательский поставщик аутентификации следующим образом:

@Component 
public class CustomAuthenticationProvider implements AuthenticationProvider { 

@Override 
public Authentication authenticate(Authentication authentication) throws AuthenticationException { 
    String username = authentication.getName(); 
    String password = authentication.getCredentials().toString(); 
    if(username.equals("user123") && password.equals("password123")) { 
     List<GrantedAuthority> grantedAuths = new ArrayList<>(); 
     grantedAuths.add(new SimpleGrantedAuthority("ROLE_USER")); //assign some role 
     Authentication auth = new UsernamePasswordAuthenticationToken(username, password, grantedAuths); 
     return auth; //return Authentication object, not true 
    } else { 
     return null; 
    } 
} 

@Override 
public boolean supports(Class<?> authentication) { 
    return authentication.equals(UsernamePasswordAuthenticationToken.class); 
} 

}

объявить новый поставщик аутентификации в нашей конфигурации:

<authentication-manager> 
    <authentication-provider ref="customAuthenticationProvider"/> 
</authentication-manager> 

Ссылка:
https://danielkaes.wordpress.com/2013/02/20/custom-authentication-provider-in-spring/

Смежные вопросы