Cześć, piszę sobie prosty komunikator wykorzystując CQRS oraz Clean architecture i zastanawiam się w jaki sposób najlepiej zaimplementować kontrolę dostępu do danego zasobu.
Obecnie robię to w ten sposób, że na poziomie Spring'owych kontrolerów wyciągam zalogowanego użytkownika oraz przekazuję jego id/username do komendy lub zapytania. W tym rozwiązaniu każdy zasób wymagający kontroli dostępu wymaga przekazania do komendy/zapytania id/username użytkownika, który wykonuje daną operację. Czy to rozwiązanie jest poprawne i jakie mam alternatywy?
Przykład:
class ConversationCreateCommand {
private String creatingUser;
...
}
class MessageSearchQuery {
private String searchingUser;
...
}