как получить доступ к принципалу пользователя в пользовательском клапане Tomcat - PullRequest
0 голосов
/ 07 сентября 2018

Пожалуйста, помогите мне по пункту ниже:

  1. Где именно заказной клапан используется вместо фильтра?
  2. В нашем приложении я создал пользовательский клапан tomcat 9 и пытаюсь получить доступ к принципалу пользователя из клапана. но в клапане возвращается ноль. но мы можем получить доступ из фильтра. мы использовали аутентификацию на основе форм.
  3. Принципал пользователя будет доступен в пользовательском клапане или доступен во флайтере?

Фрагмент кода приведен ниже:

public class ContextInitializerValve extends ValveBase {



public ContextInitializerValve() {
    System.out.println("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");
}

@Override
public void invoke(Request request, Response response) throws IOException, ServletException {


        System.out.println("======================custom valve==============================");
        Principal principal = request.getUserPrincipal();
}
}   

Заранее спасибо

1 Ответ

0 голосов
/ 17 сентября 2018

Вы можете рассматривать клапаны как эквивалент для фильтров, но на стороне сервера, а не на стороне приложения. Например. Вы должны развернуть клапан на сервере и, как правило, не сможете выполнить горячее развертывание его новых версий без перезапуска сервера. Вы можете повторно развернуть фильтр, повторно развернув свое приложение, содержащее фильтр.

И клапаны, и фильтры чувствительны к порядку: когда вы используете Valves (tomcat использует их для аутентификации на стороне сервера), и вы уверены, что пользователь аутентифицирован, но вы не получите принципала, ваш клапан, похоже, работает перед аутентификационным клапаном Tomcat. Вы можете убедиться, что ваш клапан настроен в правильном порядке, или переместить реализацию на фильтр, потому что фильтры всегда работают после , когда все клапаны работают.

В принципе, они очень похожи. Фильтры определяются спецификацией сервлета, а Valves (являющиеся частью реализации сервера) определяются Tomcat.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...