Для простой операции get вы можете просто вернуть сообщение, связанное с вашим текущим зарегистрированным пользователем
@GetMapping
public Post getPost(Authentication authentication) {
return service.getPostByUser(authentication.getName());
}
Для обновления существующего сообщения вы можете проверить в PreAuthorize, является ли создатель вошедшим в систему пользователем. authentication.getName () возвращает письмо в моем примере
@PutMapping
@PreAuthorize("#post.getCreator() == authentication.getName()")
public void update(@RequestBody Post post, Authentication authentication) {
service.updatePost(post);
}
Базовый пример пути @Component
@Autowired
private CreatorCheck creatorCheck;
@PutMapping
@PreAuthorize("@creatorChecker.check(#post,authentication)")
public void update(@RequestBody Post post, Authentication authentication) {
service.updatePost(post);
}
И компонент. Может быть расширен для извлечения исходного сообщения и проверки этого создателя.
@Component
public class CreatorCheck {
public boolean check(Post post, Authentication authentication) {
return post.getCreator().equals(authentication.getName());
}
}
Более подробное руководство можно найти в этом руководстве ссылка, найденная 0x1C1B