<!--敏感词依赖 内置敏感词库--> <dependency> <groupId>com.github.houbb</groupId> <artifactId>sensitive-word</artifactId> <version>0.2.1</version> </dependency>
敏感词配置
@Configuration
class SensitiveWordConfig {
@Resource
private CustomWordAllow customWordAllow;
@Resource
private CustomWordDeny customWordDeny;
/**
* 初始化引导类
*
* @return 初始化引导类
* @since 1.0.0
*/
@Bean
public SensitiveWordBs sensitiveWordBs() {
// 可根据数据库数据判断 动态增加配置
return SensitiveWordBs.newInstance()
// 设置黑名单
.wordDeny(WordDenys.chains(WordDenys.system(),customWordDeny))
// 设置白名单
.wordAllow(WordAllows.chains(WordAllows.system(), customWordAllow))
// 忽略大小写 默认值true
.ignoreCase(true)
// 忽略半角圆角 默认值true
.ignoreWidth(true)
// 忽略数字的写法 默认值true
.ignoreNumStyle(true)
// 忽略中文的书写格式 默认值true
.ignoreChineseStyle(true)
// 忽略英文的书写格式 默认值true
.ignoreEnglishStyle(true)
// 忽略重复词 默认值false
.ignoreRepeat(true)
// 是否启用数字检测 默认值true
.enableNumCheck(true)
// 是有启用邮箱检测 默认值true
.enableEmailCheck(true)
// 是否启用链接检测 默认值true
.enableUrlCheck(true)
// 数字检测,自定义指定长度。 默认值8
.numCheckLen(8)
// 忽略大小写 默认值true
.init();
}
}
自定义敏感词
@Component
public class CustomWordDeny implements IWordDeny {
/**
* 拒绝出现的数据-返回的内容被当做是敏感词
*
* @return
*/
@Override
public List<String> deny() {
// 从数据库中查询自定义敏感词
InputStream inputStream = null;
try {
//读出文件的信息
inputStream = new ClassPathResource("static/sensitive_words.txt").getInputStream();
} catch (IOException e) {
e.printStackTrace();
}
Scanner scanner = new Scanner(inputStream);
//将信息转换为字符串数组
String[] sensitiveWord = scanner.nextLine().replace(",","、").split("、");
//添加到敏感词库中
return Arrays.asList(sensitiveWord);
}
}
接口中使用
@ApiOperation("检测敏感词")
@PostMapping("/isSensitiveWord")
public String isSensitiveWord(@RequestBody Test test, HttpServletResponse response,HttpServletRequest request){
boolean contains = SensitiveWordHelper.contains(test);
if (contains){
return "输入的是敏感词";
}else {
return "输入的不是敏感词";
}
}
- THE END -
最后修改:2024年2月18日
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://jiaheming.cn/2023/05/java%e6%95%8f%e6%84%9f%e8%af%8d%e6%a3%80%e6%b5%8b-sensitive-word/

共有 0 条评论