У меня есть следующий метод в моем контроллере.
@GetMapping("/update/{idpost}")
public String showUpdateForm(
@PathVariable int idpost,
@ModelAttribute("post") Post post,
@ModelAttribute("user") User user,
Model model) {
post = postService.findById(idpost);
model.addAttribute("post", post);
return "_updateForm";
}
Показывается форма для обновления существующего поста.
Я хочу ограничить доступ для пользователя, который сделал это сообщение только .так что случайный пользователь не сможет получить доступ.
, поэтому я попробовал это .., стремясь сопоставить адрес электронной почты текущего пользователя (authentication.name) с адресом электронной почты владельца сообщения.но не повезло.
@PreAuthorize("#post.user.email == authentication.name")
@GetMapping("/update/{idpost}")
public String showUpdateForm(
@PathVariable int idpost,
@ModelAttribute("post") Post post,
@ModelAttribute("user") User user,
Model model) {
post = postService.findById(idpost);
model.addAttribute("post", post);
return "_updateForm";
}
Оказалось, что post аргумент имеет нулевое значение.что очевидно, как это определено в метод.(или как я использовал это совершенно неправильно.)
Вы бы поняли, что я делаю?Как я могу использовать @PreAuthorize для этой цели?