Ситуация следующая:
Юзер логинится в личный кабинет, переходя по рестам в логах могу отловить его логин.
В одном из классов, метод SecurityUtils.getCurrentUserLogin() возвращает
anonymousUser
@RestController
@RequestMapping("/open-api")
public class BillingOpenResource {
@GetMapping(value = "/billing/getEpd/{account}/{date}")
public void getEpd(@PathVariable String account, @PathVariable String date, HttpServletResponse resp) throws IOException, JSONException {
log.debug("getEpd account: {}, date: {}", account, date);
log.debug(SecurityUtils.getCurrentUserLogin()); //anonymousUser
regionService.findRegionCodeByAccount(account);
...
}
@Service
@Transactional
public class RegionService {
...
public String findRegionCodeByAccount(String account){
LOGGER.debug(SecurityUtils.getCurrentUserLogin()); //anonymousUser
.....
}
в процессе выполнения кода происходит ексепшин sun.security.validator.ValidatorException связанное с отправкой на https, это нормально))
дальше выполняется:
@RestController
@RequestMapping("/api")
public class RegionExtResource {
@GetMapping("/regions-ext/getRegionByAccount/{account}")
public ResponseEntity<Region> getRegionByAccount(@PathVariable String account,@RequestHeader(value = "Authorization") String authorization) throws IOException, JSONException {
log.debug(SecurityUtils.getCurrentUserLogin());// Ivanov
....
}
возвращаясь в класс RegionService в тот же метод findRegionCodeByAccount мы уже получаем логин юзера
я подозреваю что вероятно это связанно с реквестмапингом /open-api и /api но не могу понять где и что пропущено, куда смотреть?.
public final class SecurityUtils {
private SecurityUtils() {
}
public static String getCurrentUserLogin() {
SecurityContext securityContext = SecurityContextHolder.getContext();
Authentication authentication = securityContext.getAuthentication();
String userName = null;
if (authentication != null) {
if (authentication.getPrincipal() instanceof UserDetails) {
UserDetails springSecurityUser = (UserDetails) authentication.getPrincipal();
userName = springSecurityUser.getUsername();
} else if (authentication.getPrincipal() instanceof String) {
userName = (String) authentication.getPrincipal();
}
}
return userName;
}
}
лог файл https://github.com/maxim-grinchenko/spring-boot-web-jsp/blob/master/logfile
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости