Spring Security — принципал равен нулюJAVA

Программисты JAVA общаются здесь
Anonymous
Spring Security — принципал равен нулю

Сообщение Anonymous »

Я бился головой о стену, пытаясь решить эту проблему. Я пытаюсь получить текущего пользователя, вошедшего в систему. У меня есть конечная точка /login, как показано ниже. Проблема в строке 7. По какой-то странной причине эта строка возвращает значение null в других конечных точках, кроме текущей, /login. Например, если я отправлю запрос на отправку в /todos, этот SecurityContextHolder вернет значение null, но в /login оно не будет нулевым. Пожалуйста, помогите, спасибо.

Код: Выделить всё

@PostMapping("/login")
1) public ResponseEntity  login (@RequestBody LoginDTO loginDTO) {
2) String method = "login ()";
3) logger.info("Entering, " + method);
4) Authentication authenticate = auth.authenticate(new UsernamePasswordAuthenticationToken(loginDTO.getusername(), loginDTO.getpassword()));        5) SecurityContextHolder.getContext().setAuthentication(authenticate);
6) System.out.println("Your authentication object: " + authenticate);
7) String principal = SecurityContextHolder.getContext().getAuthentication().getName();
8) System.out.println("Principal " + principal);
9) logger.debug(authenticate);
10) return new ResponseEntity ("Welcome, " + loginDTO.getusername() + "!", HttpStatus.OK);    }
Я пробовал исследовать, но, похоже, по этому поводу очень мало информации. Я читал, что SecurityContextHolder — это переменная ThreadLocal, а это означает, что она доступна только для этого потока. Есть ли способ обойти это? Или, возможно, обходной путь?

Подробнее здесь: https://stackoverflow.com/questions/784 ... al-is-null

Вернуться в «JAVA»