Назад | Перейти на главную страницу

сервер localhost, чтобы получить доступ к страницам / admin / * и заблокировать все остальные

Требования:

  1. каждый в локальной сети может получить доступ ко всем страницам, кроме страниц / admin.
  2. только localhost должен иметь доступ к страницам / admin.

как написать веб-фильтр для tomcat 6 или других альтернатив?

Используйте следующий код в фильтре, чтобы проверить, адресован ли запрос «администратору»:

public static boolean isRequestTo(HttpServletRequest request, String urlPart) {
    return request.getRequestURI().startsWith(urlPart);
}

Используйте следующий код в фильтре, чтобы проверить, поступает ли запрос с локального хоста:

private static final String LOCAL_IP = "127.0.0.1";
private static final String LOCAL_IPV6 = "0:0:0:0:0:0:0:1";

private static Set<String> localAddresses = new HashSet<String>();

static {
    try {
        localAddresses.add(InetAddress.getLocalHost().getHostAddress());
        for (InetAddress inetAddress : InetAddress.getAllByName("localhost")) {
            localAddresses.add(inetAddress.getHostAddress());
        }
    } catch (Exception e) {
        if (!localAddresses.contains(LOCAL_IP)) {
            localAddresses.add(LOCAL_IP);
        }

        if (!localAddresses.contains(LOCAL_IPV6)) {
            localAddresses.add(LOCAL_IPV6);
        }
    }
}

public static boolean isLocalRequest(HttpServletRequest request) {
    return localAddresses.contains(request.getRemoteAddr());
}