# IP 地址校验

pac4j 允许你验证传入的 IP 地址。

# 1)依赖

你需要使用以下模块:pac4j-http

示例(Maven依赖项)

<dependency>
    <groupId>org.pac4j</groupId>
    <artifactId>pac4j-http</artifactId>
    <version>${pac4j.version}</version>
</dependency>
1
2
3
4
5

# 2)IpRegexpAuthenticator

IpRegexpAuthenticator (opens new window)允许你检查给定的 IP 地址是否有效。它通常由 IpClient (opens new window) 定义。

成功验证凭据后,它将“返回” IpProfile (opens new window)

示例

IpClient ipClient = new IpClient(new IpRegexpAuthenticator("10\\..*"));
1

通过 context.getRemoteAddr() 方法检索IP地址。不过,在某些基础设施上,IP 地址在 HTTP 标头中可用(如 X-Forwarded-Forx-real-ip)。因此,你可以定义你希望从中检索 IP 地址的 HTTP 头(一个或多个)。你可以设置代理 IP,因此 pac4j 可以在搜索头之前检查请求的远程地址是否来自代理服务器。

示例

IpClient ipClient = new IpClient(new IpRegexpAuthenticator("10\\..*"));

IpExtractor ipHeaderExtractor = new IpExtractor(ipClient.getName());
ipHeaderExtractor.setAlternateIpHeaders("X-Forwarded-For", "x-real-ip");
ipHeaderExtractor.setProxyIp("127.0.0.1");
ipClient.setCredentialsExtractor(ipHeaderExtractor);
1
2
3
4
5
6

原文链接 (opens new window)