Есть ли способ получить UserId из Spring Security?

На этот вопрос уже есть ответ здесь:

Всего 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.


Есть идеи?

10000