Например, у меня есть следующие JAX-RS 1.1 метод, который получает JWT token, проверить его, а затем процесс или отклонить запрос, как следующее:jax-rs 1.1 с фильтром безопасности и инъекцией зависимости, как этого достичь?
@GET
public Response getBook(@HeaderParam("Authorization") String authorizationToken, @QueryParam("id") String bookId) {
//if(authorizationToken is a valid JWT token)
// get User object which represented by this token
// get required book from database
// return 200 code with a book within response
//else if(authorizationToken is invalid by whatever reason it's)
// return 401 code within a response
//else if(database error)
// return 500 code within a response
}
Как вы можете видеть в каждом методе JAX-RS Мне нужно используйте те же строки кода: check token, преобразовать его в User
объект, return 401 ошибка, если это недействительно.
На самом деле я могу оптимизировать его, извлекая его в статическом методе, который выполнит эту проверку и вернет User
объект после успеха или выбросит Exception
, если что-то пошло не так. Также я могу создать webfilter, который будет проверять заголовок и проверять токен до того, как он достигнет метода jax-rs и прервет его с исключением 401, если он недействителен.
Но я хотел бы достичь всего вместе. Webfilter
, который будет проверять JWT фишку, и если она действует преобразовать его в User
объекта и вводить его в методе JAX-RS следующим образом:
@GET
public Response getBook(@RequestByUser User user, @QueryParam("id") String bookId) {
//if(get required book from database was successfull)
// return 200 code with a book within response
//else(database error)
// return 500 code within a response
}
Так что, если я достиг этой точки я могу быть уверен, что Пользователь и я не должен заботиться об этом. Можно ли достичь этого с помощью JAX-RS 1.1?
я говорил, что мне нужно решение для JAX-RS 1.1, 'ContainerRequestFilter' доступно, так как только 2,0 https://jax-rs-spec.java.net/nonav/2.0-SNAPSHOT/apidocs/javax/ws /rs/container/ContainerRequestFilter.html – Anatoly