Я разработал метод, аннотированный @PreAuthorize. Аннотация @PreAuthorize запускает метод (называемый isStringInList (String s)) в отдельном классе (@Service, который я квалифицировал как «myStringEvaluationService»), чтобы гарантировать, что метод возвращает true.
Например:
@PreAuthorize("@myStringEvaluationService.isStringInList(#myString)")
@RequestMapping(value = "/myEndPoint", method = POST)
void executeThisMethodIfAuthorised(@RequestHeader(name = "whateverTheStringIs") String myString) {
//do stuff
}
Я использую Почтальон для отправки HTTP-запросов к методу. Если я отправляю строку, которая находится в списке, вышеуказанный метод выполняется нормально. Если я отправляю строку, которой нет в списке, метод не выполняется - это нормально, я так хочу, чтобы он вел себя. Он отправляет 403 - Запрещенное сообщение обратно Почтальону.
Проблема в том, что когда я повторно отправляю строку, которая находится в списке, я вижу из отладки, что строка, которой нет в списке, - это то, что отправляется для каждого последующего запроса. По какой-то причине ошибка 403 не приводит к обновлению переменной myString. Есть ли способ обойти это?