Иннициализация логина юзера

128
17 января 2019, 12:30

Ситуация следующая:
Юзер логинится в личный кабинет, переходя по рестам в логах могу отловить его логин.
В одном из классов, метод 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

READ ALSO
Как скопировать данные удаленной бд и сохранить их локально?

Как скопировать данные удаленной бд и сохранить их локально?

Дооброго времени суток)У меня есть бд (MySQL) на хостинге

166
Почему тут не работает код? [дубликат]

Почему тут не работает код? [дубликат]

На данный вопрос уже ответили:

177
Где скачать JRE 11

Где скачать JRE 11

Скачал вчера свежую JDK 11 и поставил, но возникает ошибка

220