2014-01-31 2 views
1

Как предотвратить Spring Security от бросания AuthenticationCredentialsNotFoundException в моих модульных тестах? Я бы хотел, чтобы пользователь не был аутентифицирован или аутентифицирован анонимно.Предотвращение аутентификацииCredentialsNotFoundException при модульном тестировании

Я попытался сделать это следующим образом:

SecurityContext ctx = SecurityContextHolder.createEmptyContext(); 
    SecurityContextHolder.setContext(ctx); 
// ctx.setAuthentication(); 

, но я не знаю, где получить, что анонимный объект аутентификации с.

ответ

4

Ваш пример кода очень неспецифичен. Я предполагаю, что вы используете базовую конфигурацию, взятую из Spring Security getting started page

Для аутентификации пользователя анонимно вам нужно будет поставить анонимный пользователь в контекст безопасности:

SecurityContext ctx = SecurityContextHolder.createEmptyContext(); 
SecurityContextHolder.setContext(ctx); 
ctx.setAuthentication(new UsernamePasswordAuthenticationToken("anonymous", "", Arrays.asList(new SimpleGrantedAuthority("ROLE_ANONYMOUS")))); 

В противном случае вы должны удалить все сопоставления безопасности или аннотации от ваших соответствующих URL-адресов. См .:

How do I get permitAll in Spring Security to NOT throw AuthenticationCredentialsNotFoundException in @Controller object?

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