如何通过springBoot-java敏感词语过滤类过滤敏感字
时间: 2024-09-08 19:04:35 浏览: 74
在Spring Boot应用中,过滤敏感词通常是在处理用户输入或者日志输出时防止敏感信息泄露。你可以创建一个自定义的Filter类,利用Java的正则表达式库如`java.util.regex.Pattern`来实现这个功能。以下是一个简单的步骤:
1. 创建一个Java类,例如`SensitiveWordFilter`:
```java
import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class SensitiveWordFilter {
private static final String[] BLACKLIST_WORDS = {"密码", "账号", "私密"};
// 添加更多需要过滤的关键词
public String filter(String input) {
if (input == null || input.isEmpty()) {
return input;
}
Pattern pattern = Pattern.compile("(" + Arrays.stream(BLACKLIST_WORDS)
.reduce("(?:|(?=))", (prev, next) -> prev + "|" + next, String::concat) + ")", Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(input);
return matcher.replaceAll("*[FILTERED]*");
}
}
```
在这个例子中,我们定义了一个黑名单列表,然后使用`Pattern`和`Matcher`查找并替换所有匹配的敏感词汇。`filter`方法会返回一个替换过的字符串,其中的敏感词被星号(*)代替。
2. 将这个类注册到Spring MVC Filter链中。如果你使用的是WebMvcConfigurer,可以在`addViewControllers()`或`addFilters()`方法中配置:
```java
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("forward:/protected");
}
@Override
public void addFilters(FilterRegistrationBean<?> registrationBean) {
registrationBean.setFilter(new SensitiveWordFilter()).addUrlPatterns("/*");
}
}
```
这样,当用户的请求经过这个过滤器时,敏感词会被隐藏起来。
阅读全文