Я использую Deltaspike SecurityInterceptor санкционировать методы с @LoggedIn аннотацию.Изменение порядка выполнения CDI Interceprors и ContainerRequestFilter
В то же время я аутентифицирую пользователя с токеном по адресу ContainerRequestFilter.
@Inject
AuthenticationService authenticationService;
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
String authToken = requestContext.getHeaderString(AUTH_TOKEN);
try {
authenticationService.authenticateWithToken(authToken);
} catch (LoginException e) {
log.info(e.getMessage());
}
}
я столкнулась с проблемой, что контейнер в первую очередь выполняет SecurityInterceptor, а затем ContainerRequestFilter и пользователь получает не прошел проверку подлинности.
Есть ли способ изменить порядок выполнения?
Мой beans.xml:
<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
<interceptors>
<class>org.apache.deltaspike.security.impl.extension.SecurityInterceptor</class>
</interceptors>
Я вернулся из микшерных перехватчиков и запросил фильтры. Это разные уровни применения. Когда я имею дело с запросами, я использую фильтры запросов и прерываю каждый неавторизованный запрос до его продолжения. Когда я работаю с бобами, я использую защиту deltaspike. – schaffe