Остановить SpringSecurity от отправки автоматического 401, когда он не может найти входящий токен - PullRequest
0 голосов
/ 14 мая 2019

Рассмотрим запрос GET к контроллеру, который затем загружает ресурс из базы данных. Представьте, что ресурс базы данных имеет флаг. Флаг устанавливается, является ли ресурс общедоступным или нет. Если флаг ресурса равен true, просто верните ресурс. Если для ресурса установлен общедоступный флаг, установите значение false, тогда убедитесь, что входящий пользователь является правильным владельцем этого ресурса. Если пользователь не в этом случае отправить 401.

Как настроить Spring Security для учета этого варианта использования?

1 Ответ

0 голосов
/ 14 мая 2019

Как уже упоминалось, вы можете использовать @PostAuthorize.

Например, если у вас есть сервисный метод, который возвращает DatabaseResource, который имеет поля publicFlag и owner, следующий код выдаст AccessDeniedException, если publicFlag == false и owner != authentication.name.

@PostAuthorize("returnObject.publicFlag == true 
                 || returnObject.owner == authentication.name")
public DatabaseResource returnResource() {
    // load the resource...
    return databaseResource;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...