Работа с Spring / Spring Security на небольшом проекте в данный момент и трудности с реализацией этой функции.В идеале я хочу, чтобы user1 просматривал подробности user1, а не, например, 2,3 или 4.
Я реализовал Spring Security с ролями и понимаю, что могу получить объект или принцип UserDetails,Я точно не уверен, но я знаю, что могу получить информацию о текущем вошедшем в систему пользователе, используя один из, как представляется, многих методов.
Это то, что я сейчас использую в качестве доказательства концепциикогда мы переходим на страницу администратора / домашней страницы:
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
Gamer gamer = gamerService.findGamerByEmail(auth.getName());
System.out.println("Auth: " + auth.getName());
System.out.println("Gamer: " + gamer.getName() + gamer.getId() + gamer.getEmail());
Конфигурация безопасности заботится о том, может ли текущий пользователь получить доступ из-за назначенных ему ролей.
Я полагаю, что смогу перейти по URL-адресу /mysite/viewUserDetails
и на этой странице отобразить информацию о текущем пользователе, но я не могу найти никаких примеров этого, я нашел множество примеров, которые доказываютвошедший в систему пользователь может просматривать страницу, но ни одна из них, где указаны проверки, чтобы гарантировать, что user1 может просматривать только данные пользователя 1.
На старой странице я делаю это для отображения информации для конкретного пользователя, но я понимаю, что это плохопрактика-
<a th:href="@{/gamer/{gamerid}/games/excited (gamerid=${gamer.id}) }">
* Стоит отметить, что здесь не используется какая-либо форма входа / регистрации для извлечения этой информации, я просто использую идентификатор, который передаю в качестве части запроса БД.
Он отображается на:
@RequestMapping("/gamer/{gamerid}/games/excited")
public String getExcited(@PathVariable final Long gamerid, Model model){
addGamerListAttributes(model, gamerid, "EXC");
return "games";
}
Таким образом, у меня возникает вопрос, и я надеюсь, что вы можете указать верное направление. Как я могу реализовать решение, в котором пользователь может просматривать только свои данные?и как это должно быть представлено через форму и соединяющие контроллеры, так как передача идентификаторов в URL довольно уродлива (я мог бы использовать guid, но ...)
Заранее большое спасибо.