Может быть, это то, что вам нужно:
я есть сервлет с ограничением безопасности в его 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);
}
}
Поэтому мне нужно знать, находится ли запрос под защитой или нет. Откуда я это знаюпрограммно? Это вообще возможно?