Имам пролетно MVC уеб приложение, осигурено с пролеттаСигурност и аз съм в процес на писане на тестове. Аз се боря да намеря един от моите (потребителски) потребители от Spring Security в SecurityContextHolder. След като потребителят ми бъде „вмъкнат“ (конфигуриран с java) с:
auth.inMemoryAuthentication().getUserDetailsService().createUser(myCustomUser);
След това мога да създам свързания маркер (UsernamePasswordAuthenticationToken) и да помоля Spring да удостовери моя потребител с този знак. Проблемът е, че пролетта не възстановява персонализиран потребителски потребителски модел, но инстанция на неговия потребителски клас. Когато Spring търси такъв потребител в следния метод (от InMemoryUserDetailsManager на Spring):
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
UserDetails user = users.get(username.toLowerCase());
if (user == null) {
throw new UsernameNotFoundException(username);
}
return new User(user.getUsername(), user.getPassword(), user.isEnabled(), user.isAccountNonExpired(),
user.isCredentialsNonExpired(), user.isAccountNonLocked(), user.getAuthorities());
}
Той създава нов потребител с подробности, предоставени от моята конфигурация.
Не виждам проблема с товаInMemoryUserDetailsManager директно връща онова, което му е изпратено, чрез обаждането "getUserDetailsService (). CreateUser", но трябва да има едно вероятно ... Както и да е, аз вероятно правя нещо нередно, някаква идея?
Отговори:
6 за отговор № 1Както предложих, накрая написах обичай InMemoryUserDetailsManager
, които се хранят ми Spring Security конфигурация с.
За всеки, който се чуди, изглежда, че това е единственият начин.