# 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
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-For
或 x-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
2
3
4
5
6