Функция TestRestTemplate.withBasicAuth() не работает В настройках доступ ко всем ендпоинтам открыт. Переопределенная функция Spring Security loadUserByUsername() не срабатывает при вызове функции withBasicAuth(), хотя в конфиге UserDetailsServiceImpl я указывал её. Когда я пытаюсь получить текущего пользователя после withBasicAuth()
SecurityContextHolder.getContext().GetAuthentication().GetPrincipal().GetUsername()
я получаю anonUser.
// security config
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()
.csrf().disable()
.exceptionHandling().and()
.anonymous().and()
.servletApi().and()
.authorizeRequests()
.antMatchers(HttpMethod.GET, "/**").permitAll()
.antMatchers(HttpMethod.POST, "/**").permitAll()
.anyRequest().authenticated();
http.formLogin()
.loginPage("/login")
.loginProcessingUrl("/j_spring_security_check")
.failureUrl("/login?error")
.usernameParameter("j_email")
.passwordParameter("j_password")
.permitAll();
http.logout()
.permitAll()
.logoutUrl("/logout")
.logoutSuccessUrl("/login?logout")
.invalidateHttpSession(true);
}
// code on server
// get user from db
private CUser getDBUser() {
Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
String username;
if (principal instanceof UserDetails) {
username = ((UserDetails) principal).getUsername();
} else {
username = principal.toString();
}
System.out.println(username);
CUser dbCUser = userService.findByEmail(username);
return dbCUser;
}
// endpoint /cabinet/spring_test, login test
@GetMapping("/spring_test")
public ResponseEntity<Message> onSpringTest() {
if (getDBUser() != null)
return new ResponseEntity<>(new Message("/spring_test", "test success"), HttpStatus.OK);
return new ResponseEntity<>(
new Message("/spring_test",
"Unauthorized."),
HttpStatus.UNAUTHORIZED);
}
// unit test on login
@Test
public void testLogin() {
CUser user = new CUser(
"vex788",
passwordEncoder.encode("testvex"),
UserRole.ADMIN,
"testvex@mail.com",
"0123456789",
false,
"123.45.67.89"
);
if (userService.addUser(user)) System.out.println("Admin added.");
TestRestTemplate restTemplate = new TestRestTemplate();
ResponseEntity<Message> result = restTemplate
.withBasicAuth("testvex@mail.com", "testvex")
.getForEntity("http://localhost:8080/cabinet/spring_test", Message.class);
System.out.println(result.getBody().getMessage());
Assert.assertEquals(HttpStatus.OK, result.getStatusCode());
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
У меня есть некий "Кликер Монет"Но если нажать один раз на кнопку, то в будущем можно будет просто зажать клавишу Enter и счётчик монет будет...
Возможно ли по средствам JavaScript отследить что пользователь зашел на старицу с уже открытой панелью разработчика DevTools ? (не только для Chrome но и для...
Пишу программу-парсер на Java, но проблема в том, что у некоторых сайтов (как пример со списком прокси-серверов) перед входом на сайт есть скрипт...
Написал скрипт, для круглого прогресс бара с помощью SVG, на чистом jsНо не учел тот факт, что мне нужно еще и текст внутри этого круга сделать