экспериментируя с весенней загрузкой, безопасностью и данными.
я только что натолкнулся на этот сценарий:
Я использую H2 в памяти DB и постулирую его с одним пользователем с жидкой базой при запуске
с именем пользователя и паролем.
Теперь я хочу, чтобы Spring Security проходил аутентификацию по H2. для этого у меня есть этот код:
@Override
protected void configure(final AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsServiceImp);
}
и я реализую userDetails следующим образом:
@Override
public UserDetails loadUserByUsername(String username) {
//this works, the user with pass is pulled
com.fix.demo.logic.user.User byUsername =
userRepository.findByUsername(username);
if (byUsername == null) {
System.out.println("No user found with username: ");
return null; //trow ex here
}
User user = new User(byUsername.getUsername(),
byUsername.getPassword(), true, true,
true, true, getAuthorities(Collections.singletonList("user")));
//System.out.println(user.toString());
//System.out.println(byUsername.toString()+ " "+byUsername.getPassword());
return user;
}
но мои тесты продолжают проваливаться с
Аутентификация не должна быть нулевой
и попытка войти даст мне
неверные учетные данные
что необходимо для моей пользовательской реализации UserDetailsService?
это провальный тест:
@Test
public void loginWithValidUserThenAuthenticated() throws Exception {
FormLoginRequestBuilder login = formLogin()
.user("admin")
.password("root");
mockMvc.perform(login)
.andExpect(authenticated().withUsername("admin"));
}