Пытался. Все еще пустое имя пользователя
оеUserDetailService
:
public class StockUserDetailService implements UserDetailsService {
@Autowired
private UserRepository userRepository;
private static final Logger logger = Logger.getLogger(StockUserDetailService.class);
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
logger.debug("entering loadByUserName");
// MongoDatabase database = mongoClient.getDatabase("springsecurity");
User user = userRepository.findOne(username);
logger.debug("this is teh user ibzect ="+user);
if (user == null) {
logger.info("----------------------------------------------user name is "+username);
throw new UsernameNotFoundException("NAT FOUND");
}
return user;
}
}
Ноusername
аргумент всегда приходит какnull
, Я видел тонны других сообщений на Stackoverflow с той же проблемой. Некоторые из них говорят, что это потому, чтоusername
а такжеpassword
как часть заголовков HTTP, а не JSON.
Но я не думаю, что это правда, потому что страница входа в Spring Boot по умолчанию имеет простую форму, которая делаетPOST
запросить/login
, Что я и делаю
Я не понимаю проблему здесь.
PS: я настроилusername
а такжеpassword
ключевые имена правильно:
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.authorizeRequests()
.antMatchers("/signup**").permitAll()
.antMatchers("/login/**").permitAll()
.antMatchers("/logout/**").permitAll()
.and()
.authorizeRequests()
.antMatchers("/admin/**").hasAuthority("ADMIN")
.and()
.formLogin()
.usernameParameter("username").
.passwordParameter("password");
}