当前位置: 首页 > news >正文

sensitive-word-admin v2.0.0 全新 ui 版本发布!vue+前后端分离

前言

sensitive-word-admin 最初的定位是让大家知道如何使用 sensitive-word,所以开始想做个简单的例子。

不过秉持着把一个工具做好的原则,也收到很多小伙伴的建议。

v2.0.0 在 ruoyi-vue(也非常感谢若依作者多年来的无私奉献) 的基础之上,对整体 UI 进行重构。

为了实现一个让用户可以开箱就用的敏感词控台。

项目介绍

平台简介

sensitive-word-admin 是和 sensitive-word 配套使用的控台。

  • 前端采用Vue、Element UI。
  • 后端采用Spring Boot、Spring Security、Redis & Jwt。
  • 权限认证使用Jwt,支持多终端认证系统。
  • 支持加载动态权限菜单,多方式轻松权限控制。
  • 高效率开发,使用代码生成器可以一键生成前后端代码。

拓展阅读

sensitive-word-admin 敏感词控台 v1.2.0 版本开源

sensitive-word 基于 DFA 算法实现的高性能敏感词工具介绍

特性

  • 基本的 CRUD

  • 敏感词修改实时生效

变更日志

本地启动

依赖

redis

mysql

node

后端

2)执行 mysql 脚本

登录 mysql

清空库(谨慎操作,别清空了以前的数据)

use test;
drop database sensitive_word;

创建库

create database sensitive_word;
use sensitive_word;

执行 sql 下的 init.sql+ sensitive_word.sql

3)修改配置

application-druid.yml 调整一下数据库链接+账户密码

spring:datasource:type: com.alibaba.druid.pool.DruidDataSourcedriverClassName: com.mysql.cj.jdbc.Driverdruid:# 主库数据源master:url: jdbc:mysql://localhost:3306/sensitive_word?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8username: rootpassword: PASSWORD

运行 SpringBootApplication#main()

前端

cd admin-ui
npm install --registry=https://registry.npm.taobao.org
npm run dev

登录

打开浏览器,输入:http://localhost:80 (默认账户 admin/admin123)

敏感词基本管理

你可以在敏感词管理菜单,进行管理。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

API

ApiSensitiveWordController 中包含对应的 api 方法,后续可以添加验签等校验。

接口列表

api入参出参说明
/api/sensitiveWord/containsstringboolean是否包含敏感词
/api/sensitiveWord/findAllstringList<String>获取所有的敏感词
/api/sensitiveWord/findFiststringstring获取第一个的敏感词
/api/sensitiveWord/replacestringstring获取替换后的结果
/api/sensitiveWord/tagsstringSet<String>获取敏感词的标签列表

接口验证

token

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们登录之后,可以获取到对应的 token。

比如我们打开【系统工具】-【系统接口】,任意找一个接口,看一下对应的 Authorization

比如这里就是

eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsImxvZ2luX3VzZXJfa2V5IjoiYzBjMmY0MWQtMjliMS00YzlkLWI2ZmMtNDhlZTk4MGIwZjJjIn0.67qpqIndfAd4J769ny1jqq8kEnATE9u5DbjJoMpbiMCSvAg2WaBV0b4nBjo5UxKVqcqbYgmnIN4gUi3AP2p6uw

swagger 认证

然后点击绿色认证按钮认证一下,输入上面的 token。

就可以想基本的 swagger 一样验证接口。

curl 请求

你可以本地直接 curl

curl -X GET "http://localhost:80/dev-api/api/sensitiveWord/tags?text=%E4%BA%8C%E5%8D%81%E5%85%AB%E7%94%BB%E7%94%9F" -H "accept: */*" -H "Authorization: eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsImxvZ2luX3VzZXJfa2V5IjoiYzBjMmY0MWQtMjliMS00YzlkLWI2ZmMtNDhlZTk4MGIwZjJjIn0.67qpqIndfAd4J769ny1jqq8kEnATE9u5DbjJoMpbiMCSvAg2WaBV0b4nBjo5UxKVqcqbYgmnIN4gUi3AP2p6uw"

结果:

{"respCode": "0000","respMessage": "成功","result": ["伟人","画家"]
}

如何自定义标签

自定义单词 TAG

我们在配置中指定:

@Configuration
public class SensitiveWordConfig {@Autowiredprivate MyDdWordAllow myDdWordAllow;@Autowiredprivate MyDdWordDeny myDdWordDeny;/*** 自定义单词标签** @since v1.4.0*/@Autowiredprivate MyDdWordTags myDdWordTags;/*** 初始化引导类* @return 初始化引导类* @since 1.0.0*/@Beanpublic SensitiveWordBs sensitiveWordBs() {return SensitiveWordBs.newInstance().wordAllow(WordAllows.chains(WordAllows.defaults(), myDdWordAllow)).wordDeny(WordDenys.chains(WordDenys.defaults(), myDdWordDeny)).wordTag(myDdWordTags)// 各种其他配置.init();}}

MyDdWordTags 自定义实现

MyDdWordTags 是一个实现的例子:

核心分为两步:

1)根据【标签单词映射表】获取单词对应的标签编码(tag_code) 列表

2)根据【标签表】中的 tag_code 去查询对应的 标签描述(tag_label) 列表

所以需要分别配置二者,然后进行关联。

SELECT DISTINCT
mapping.word AS word,
tag.tag_label AS tagLabel
FROM word_tag_mapping mapping
INNER JOIN tag tag ON mapping.tag_code = tag.tag_code
WHERE tag.status = 'Y'

road-map

当然,v2.0.0 出版的能力还比较欠缺,用户体验还是不够友好。

感兴趣的小伙伴也可以针对下面的需求进行 PR,欢迎一起交流。

如果你有需求,可以去这里issues

待改进点

  • 单个词的修改实时生效
  • word/tags 的修改,增量的变化,而不是全量
  • word-tag 的处理,改为枚举映射,而不是手动输入
  • 限定接入系统 appKey appSecret
  • 系统的调用记录
  • 数据大盘
  • [ ] word 操作时对应的日志表,有必要存在吗?(可以不保留,ruoyi 本身就有操作日志)

技术鸣谢

  • 感谢 ruoyi-vue 的无私奉献

拓展阅读

sensitive-word-admin v1.3.0 发布 如何支持分布式部署?

sensitive-word-admin 敏感词控台 v1.2.0 版本开源

sensitive-word 基于 DFA 算法实现的高性能敏感词工具介绍

更多技术交流

开源矩阵

sensitive-word 敏感词

pinyin 汉字转拼音

pinyin2hanzi 拼音转汉字

segment 高性能中文分词

opencc4j 中文繁简体转换

nlp-hanzi-similar 汉字相似度

word-checker 拼写检测

参考资料

https://github.com/houbb/sensitive-word-admin

http://www.xdnf.cn/news/374563.html

相关文章:

  • T2I-R1:通过语义级与图像 token 级协同链式思维强化图像生成
  • 为什么有了BST了,还要红黑树,红黑树有什么优点
  • OCP开闭原则
  • Xilinx Kintex-7 XC7K325T-2FFG676I 赛灵思 FPGA
  • Kubernetes生产实战(十六):集群安全加固全攻略
  • Visual Studio 2022 远程调试
  • 【字符函数和字符串函数】
  • 类加载机制详解:双亲委派模型与打破它的方式
  • 服务器机架的功能和重要性
  • 遗传算法组卷系统实现(Java版)
  • Linux平台下SSH 协议克隆Github远程仓库并配置密钥
  • Unity.UGUI DrawCall合批笔记
  • Unity Shaders and Effets Cookbook
  • LeetCode 热题 100 138. 随机链表的复制
  • 关键点检测--使用YOLOv8对Leeds Sports Pose(LSP)关键点检测
  • 数学相关使用笔记
  • libbpf.c:46:10: fatal error:‘libelf.h file not found
  • SpringCloud之Eureka基础认识-服务注册中心
  • 使用lldb查看Rust不同类型的结构
  • Java与Go语言对比教程
  • 【计算机视觉】优化MVSNet可微分代价体以提高深度估计精度的关键技术
  • Python_day21
  • 深度学习中的目标检测:从 PR 曲线到 AP
  • 常见音频主控芯片以及相关厂家总结
  • SSM框架整合MyBatis-Plus的步骤和简单用法示例
  • LLM大模型入门知识概念
  • 小米创业思考——阅读小记
  • MySQL 中如何进行 SQL 调优?
  • 数据库连接池
  • 04 mysql 修改端口和重置root密码