Может быть, это то, что вам нужно:

я есть сервлет с ограничением безопасности в его web.xml, как показано ниже:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Admin</web-resource-name>
        <url-pattern>/admin/*</url-pattern>
    </web-resource-collection>
    <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint>

Выше принудительно переключается на протокол https и работает нормально. Но на защищенных страницах есть некоторыеродственник ссылки на незащищенные страницы. Когда пользователи нажимают на них, они открываются через https, чего я хочу избежать. Преобразование относительных ссылок в абсолютные не вариант. Спецификация сервлета не предоставляет средства принудительного незащищенного соединения, поэтому я собираюсь реализовать фильтр, который перенаправит пользователя на http:

public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
    if(!isSubjectToAuthConstraint(request)) {
        // Check protocol and redirect to http if https
        // ....
    } else {
        // Do nothing, managed by servlet spec
        filterChain.doFilter(request, response);
    }
}

Поэтому мне нужно знать, находится ли запрос под защитой или нет. Откуда я это знаюпрограммно? Это вообще возможно?

Ответы на вопрос(1)

Ваш ответ на вопрос