java 通过匹配IP白名单表确定权限详细代码
时间: 2023-08-08 16:05:25 浏览: 38
以下是一个简单的Java代码示例,用于检查IP地址是否在白名单中:
```
import java.util.ArrayList;
import java.util.List;
public class IPWhitelist {
private List<String> allowedIPs;
public IPWhitelist() {
allowedIPs = new ArrayList<String>();
// 此处可以从配置文件或者数据库中读取允许访问的IP列表
allowedIPs.add("192.168.0.1");
allowedIPs.add("10.0.0.1");
}
public boolean isAllowed(String ipAddress) {
return allowedIPs.contains(ipAddress);
}
}
```
在上面的代码中,我们定义了一个IPWhitelist类,其中包含一个allowedIPs列表,用于存储允许访问应用程序的IP地址。在构造函数中,我们可以从配置文件中读取这个列表。isAllowed()方法用于检查给定的IP地址是否在allowedIPs列表中。如果是,则返回true,否则返回false。在实际应用中,我们可以在每个请求到达应用程序时调用isAllowed()方法来检查请求的IP地址是否在白名单中。
相关问题
生成IP白名单校验的Java代码
以下是一个生成IP白名单校验的Java代码示例:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class IpWhiteListValidator {
private List<Pattern> whiteList;
public IpWhiteListValidator(List<String> ipList) {
whiteList = new ArrayList<>();
for (String ip : ipList) {
whiteList.add(Pattern.compile(ipToRegex(ip)));
}
}
public boolean validate(String ip) {
for (Pattern pattern : whiteList) {
Matcher matcher = pattern.matcher(ip);
if (matcher.matches()) {
return true;
}
}
return false;
}
private String ipToRegex(String ip) {
String[] parts = ip.split("\\.");
StringBuilder regex = new StringBuilder();
for (String part : parts) {
if (part.equals("*")) {
regex.append("\\d{1,3}");
} else {
regex.append(part);
}
regex.append("\\.");
}
regex.deleteCharAt(regex.length() - 1);
return regex.toString();
}
}
```
该代码包含一个`IpWhiteListValidator`类,它接受一个IP地址列表并生成一个包含正则表达式的白名单。`validate`方法接受一个IP地址并将其与白名单中的正则表达式进行匹配。`ipToRegex`方法将IP地址转换为正则表达式。使用`*`作为通配符。例如,`192.168.*.*`将被转换为`192\.168\.\d{1,3}\.\d{1,3}`。
java 版IP白名单
要实现 IP 白名单功能,可以使用 Java 中的过滤器(Filter)。以下是一个简单的 IP 白名单过滤器示例代码:
```java
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class IPFilter implements Filter {
private List<String> whiteList = new ArrayList<>();
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// 读取白名单列表
String ips = filterConfig.getInitParameter("whiteList");
String[] ipArray = ips.split(",");
for (String ip : ipArray) {
whiteList.add(ip.trim());
}
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
String remoteAddr = httpRequest.getRemoteAddr();
if (whiteList.contains(remoteAddr)) {
// IP 在白名单中,放行
chain.doFilter(request, response);
} else {
// IP 不在白名单中,返回 403 Forbidden 状态码
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.setStatus(HttpServletResponse.SC_FORBIDDEN);
}
}
@Override
public void destroy() {
// do nothing
}
}
```
在 web.xml 中配置过滤器:
```xml
<filter>
<filter-name>IPFilter</filter-name>
<filter-class>com.example.IPFilter</filter-class>
<init-param>
<param-name>whiteList</param-name>
<param-value>127.0.0.1,192.168.0.1</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>IPFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
```
在 init-param 中配置白名单列表,多个 IP 用逗号分隔。该示例中只是简单的判断 IP 是否在白名单中,实际应用中可以根据需要进行更复杂的判断。