Как грамотно и удобно организовать аутентификацию в Spring REST Api через JWT? Сессию не хочу использовать, потому что это REST и JWT. Проверка токена должна проходить при каждом запросе, который требует аутентификации. Токен хранится или в куки или передается в хедерах(это не столь важно).
Вопрос в том, как можно сделать аутентификацию, максимально простой в использовании, что бы написать, допустим, фильтр, и забыть про это. Что бы внутри каждого метода где нужна аутентификация, не дергать что то типо getUser(). Хочется просто написать и забыть, но что бы этот юзер уже был внутри метода и с ним можно было работать.
До этого писать Api на SparkJava, там все было очень просто. Вместо стандартного Route, там где надо было, возвращал самописный SecuredRoute, который в свою очередь имплементился от стандартного Route, и переопределял его стандартный метод handle, в котором была написана логика проверки авторизации, и если юзер авторизован, то дальше передавался handleSecured, в параметрах которого уже был сам юзер.
Код для наглядности, который был на spark
public interface SecuredRoute extends Route {
@Override
default Object handle(Request request, Response response) {
// Логика проверки...
if (юзер не прошел провеку) {
response.removeCookie("/", "accessToken");
return new ErrorResponse(response).errorResponseUnauthenticated();
}
return handleSecured(request, response, user);
}
Object handleSecured(Request request, Response response, User user);
}
Можно ли что-либо подобное сделать на Spring?
Мне кажется что в идеале было бы создать какую то свою аннотацию, которая ставилась бы перед методом, в котором нужна авторизация, и как то инжектила этого юзера в метод