1. 业务开发
主要提供三种使用方式:
- 注解@SensitiveWord
- 工具类 SensitiveWordsUtil.find()
- 工具类 SensitiveWordsUtil.replace()
1.1. 注解@SensitiveWord
通用AOP过滤不来的方法,通过业务层代码通过在方法上加上 @SensitiveWord
注解达到过滤效果
@SensitiveWord
public ResultData 方法(ProgressLogEntity progressLog) {}
[!tip]
方法形参上必须存在BaseEntity
类型参数才有效,这里ProgressLogEntity
是BaseEntity
子类
1.2. 工具类 SensitiveWordsUtil.find()
业务代码中通过工具类灵活的对内容进行敏感词检测
//关键字配置
String content = "滚出去";
List<String> sensitiveWords = SensitiveWordsUtil.find(content);
//sensitiveWords 返回当前文本中敏感词集合,有空的情况,需要空判断处理
1.3. 工具类 SensitiveWordsUtil.replace()
业务代码中通过工具类灵活的对内容进行敏感词过滤
//关键字配置
String content = "滚出去";
content = SensitiveWordsUtil.replace(content)
//content 就是过滤之后的内容
1.4. 如果需要拦截所有的业务数据,需要修改通用的AOP
修改net.mingsoft.wordfilter.aop.SensitiveWordAop
增加下面两个拦截配置
@Before("execution(* net.mingsoft..*Action.save(..))")
public void save(JoinPoint joinPoint) throws IllegalAccessException {
startReplace(joinPoint);
}
@Before("execution(* net.mingsoft..*Action.update(..))")
public void update(JoinPoint joinPoint) throws IllegalAccessException {
startReplace(joinPoint);
}
[!tip] 具体会拦截
save
、update
方法,不需要额外编写代码
1.5. 如果需要在前端拦截提示,需要增加以下代码
data: function () {
return {
// 是否开启敏感词检测
isEnableWord: false,
}
}
methods: {
// 保存前先检查是否存在敏感词
checkSensitiveWord: function() {
var that = this;
if (that.isEnableWord) {
// 存储需要检测字段数据
var data = {
contentTitle: that.form.contentTitle,
};
ms.http.post(ms.manager + "/wordfilter/sensitiveWords/check.do", data, {
headers: {
'Content-Type': 'application/json'
}
}).then(function (res) {
if (res.result && res.data.length > 0) {
that.$refs.msAi.sensitiveSave(res.data);
}
else {
// 改成自己需要调用的方法
that.save();
}
})
} else {
// 改成自己需要调用的方法
that.save();
}
}
}
create: function () {
var that = this
ms.mdiy.config("安全设置", "isEnableWord", true).then(function (res) {
if (res.result && res.data === 'true') {
that.isEnableWord = true;
}
});
}
[!tip] 注意需要引入百度AI页面业务开发
如果检测出来还需要调用原页面某个方法,需要这样处理
<ms-ai ref="msAi" @custom-event="save" :content="form.contentDetails"></ms-ai>
[!tip] 其中save为您自定义的方法名称