若依 ruoyi-vue SpringBoot聊天敏感词过滤sensitive-word

本文主要是介绍若依 ruoyi-vue SpringBoot聊天敏感词过滤sensitive-word,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

组件地址
https://github.com/houbb/sensitive-word

网上博客版本不是最新,查看官方文档,基于0.16.1整理总结,快速上手

pom文件引入

<dependency><groupId>com.github.houbb</groupId><artifactId>sensitive-word</artifactId><version>0.16.1</version>
</dependency>

配置类

package com.huida.tzly.sensitive;import com.github.houbb.sensitive.word.bs.SensitiveWordBs;
import com.github.houbb.sensitive.word.support.allow.WordAllows;
import com.github.houbb.sensitive.word.support.ignore.SensitiveWordCharIgnores;
import com.github.houbb.sensitive.word.support.resultcondition.WordResultConditions;
import com.github.houbb.sensitive.word.support.tag.WordTags;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class SpringSensitiveWordConfig {@Autowiredprivate MyDdWordAllow myDdWordAllow;@Autowiredprivate MyDdWordDeny myDdWordDeny;/*** 初始化引导类** @return 初始化引导类* @since 1.0.0*/@Beanpublic SensitiveWordBs sensitiveWordBs() {SensitiveWordBs sensitiveWordBs = SensitiveWordBs.newInstance()//白名单.wordAllow(WordAllows.chains(WordAllows.defaults(), myDdWordAllow))//黑名单.wordDeny(myDdWordDeny)//否启用敏感单词检测 fuck.enableWordCheck(true)//忽略大小写.ignoreCase(true)//忽略半角圆角 fuck the bad words..ignoreWidth(true)//忽略中文繁简体样式.ignoreChineseStyle(true)//忽略英文样式 Ⓕⓤc⒦ the bad words.ignoreEnglishStyle(true)// 是否忽略重复 ⒻⒻⒻfⓤuⓤ⒰cⓒ⒦ the bad words.ignoreRepeat(false)// 连续数字检测 过滤手机号、QQ等//.enableNumCheck(true)//指定连续数字检测长度//.numCheckLen(8)//邮箱检测//.enableEmailCheck(true)//网址检测 www.baidu.com//.enableUrlCheck(true)//忽略数字的写法,这个是我的微信:9⓿二肆⁹₈③⑸⒋➃㈤㊄//.ignoreNumStyle(true)//词对应的标签 属于政治或人身攻击.wordTag(WordTags.none())//忽略的字符.charIgnore(SensitiveWordCharIgnores.defaults())//针对匹配的敏感词额外加工,比如可以限制英文单词必须全匹配.wordResultCondition(WordResultConditions.alwaysTrue()).init();return sensitiveWordBs;}}

从数据库加载自定义敏感词白名单黑名单

package com.huida.tzly.sensitive;import com.github.houbb.sensitive.word.api.IWordAllow;
import com.huida.tzly.domain.TzLySensitiveWord;
import com.huida.tzly.service.TzLySensitiveWordService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;/*** @author binbin.hou* @since 1.0.0*/
@Component
public class MyDdWordAllow implements IWordAllow {@Autowiredprivate TzLySensitiveWordService tzLySensitiveWordService;@Overridepublic List<String> allow() {// 数据库查询List<TzLySensitiveWord> list = tzLySensitiveWordService.selectTzLySensitiveWord(TzLySensitiveWord.builder().type(1).build());List<String> allowList = list.stream().map(TzLySensitiveWord::getName).collect(Collectors.toList());return allowList;}}
package com.huida.tzly.sensitive;import com.github.houbb.sensitive.word.api.IWordDeny;
import com.huida.tzly.domain.TzLySensitiveWord;
import com.huida.tzly.service.TzLySensitiveWordService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;/*** @author binbin.hou* @since 1.0.0*/
@Component
public class MyDdWordDeny implements IWordDeny {@Autowiredprivate TzLySensitiveWordService tzLySensitiveWordService;@Overridepublic List<String> deny() {// 数据库查询List<TzLySensitiveWord> list = tzLySensitiveWordService.selectTzLySensitiveWord(TzLySensitiveWord.builder().type(0).build());List<String> denyList = list.stream().map(TzLySensitiveWord::getName).collect(Collectors.toList());return denyList;}}
    @Overridepublic String checkMessage(Long messageId, String message, List<TzLyUser> tzLyUserList) {//找出全部敏感词List<String> sensitiveWordList = SensitiveWordHelper.findAll(message);// 判断发送的消息是否包含扬言敏感词if (CollectionUtils.isEmpty(sensitiveWordList)) {return null;}String finalMessage = message;//将敏感词替换成**for (String word : sensitiveWordList) {StringBuilder sb = new StringBuilder();for (int i = 0; i < word.length(); i++) {sb.append("*");}finalMessage = finalMessage.replace(word, sb.toString());}// 批量插入敏感词记录mergeBatch(messageId, tzLyUserList, StrUtil.join(",", sensitiveWordList),message);return finalMessage;}

这篇关于若依 ruoyi-vue SpringBoot聊天敏感词过滤sensitive-word的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1007594

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

【 html+css 绚丽Loading 】000046 三才归元阵

前言:哈喽,大家好,今天给大家分享html+css 绚丽Loading!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 📚一、效果📚二、信息💡1.简介:💡2.外观描述:💡3.使用方式:💡4.战斗方式:💡5.提升:💡6.传说: 📚三、源代码,上代码,可以直接复制使用🎥效果🗂️目录✍️