На этот вопрос уже есть ответ здесь:
Всего 1 ответ
Как я понимаю, ваша главная задача - не повторять этот код каждый раз, когда вам нужен идентификатор пользователя, вошедшего в систему? Если это так, просто переместите этот код в какой-нибудь сервис, скажем UserService:
@Service public class UserService { public User getLoggedInUser(long id) { // your code from original post goes here } }
а затем включить эту услугу в классе. что вы намереваетесь использовать эту функциональность и использовать ее. Скажем, ваш класс называется своего рода RestController, который называется MyController:
@RestController public class MyController{ private UserService userService; public MyController(UserService userService){ this.userService = userService; } public void myMethod() { User authUser = userService.getLoggedInUser(); } }
или, если вам нужен только идентификатор, измените метод для возврата идентификатора и используйте его вместо:
long userId = userService.getLoggedInUserId();
Код внутри нового метода UserService будет таким же, как в вашем вопросе выше, но код, который использует его в MyController, будет гораздо более читабельным.
Если вам нужен этот идентификатор только для проверки прав доступа, используйте @PreAuthorize("hasRole('ROLE_SMTH')")
или другие подобные аннотации из Spring Security.