/ / Как да получите потребителски потребител, регистриран чрез InMemoryAuthentication с Spring Security? - java, spring, mvc, spring-security

Как да си регистрирам потребителски потребител чрез InMemoryAuthentication с Spring Security? - java, spring, spring-mvc, пролет-сигурност

Имам пролетно 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 конфигурация с.
За всеки, който се чуди, изглежда, че това е единственият начин.