Одним из подходов может быть введение роли, называемой «BLOCKED», назначение ее всем пользователям, когда они заблокированы, и аннотирование всех методов, которые не позволяют заблокированным пользователям получать к ним доступ:
@PreAuthorize("!hasRole('BLOCKED')")
public void secureMethod();
Другим подходом будет сохранение заблокированного статуса в пользовательской базе данных или в каком-либо другом хранилище. Затем расширьте UserDetailsService , чтобы получить дополнительную информацию о пользователе, включая флаг «заблокирован». И снова используйте защитный EL для фильтрации методов, которые не позволяют заблокированным пользователям выполнять их:
@PreAuthorize("!principal.blocked")
public void secureMethod();
ОБНОВЛЕНИЕ :
К проблеме, о которой вы упоминали в комментариях, можно подходить аналогичным образом:
@PreAuthorize("!#photo.owner.blockedUsers.contains(principal.name)")
public void likePhoto(Photo photo);
Для более сложных и / или общих правил я бы посоветовал использовать аспекты АОП, чтобы сохранить ваш код в чистоте от слишком большого числа ifs.