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.mzph.cn/bicheng/80890.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

好消息!PyCharm 社区版现已支持直接选择 WSL 终端为默认终端

在过去&#xff0c;PyCharm 社区版虽然提供了链接 Windows 子系统 Linux&#xff08;WSL&#xff09;终端的能力&#xff0c;但用户无法在设置中直接指定 WSL 为默认终端&#xff0c;这一功能仅限于专业版使用者。 而现在&#xff0c;在 PyCharm 2025.1.1 版本中&#xff0c;Je…

【Redis】string 字符串

文章目录 string 字符串常用命令设置和获取setgetmget & mset 计数操作incr & incrbydecr & decrbyincrbyfloat 字符串操作appendstrlengetrangesetrange 应用场景 string 字符串 关于 Redis 的字符串&#xff0c;有几点需要注意 Redis 所有的 key 的类型都是字符…

本地部署firecrawl的两种方式,自托管和源码部署

网上资料很多 AI爬虫黑科技 firecrawl本地部署-CSDN博客 源码部署 前提条件本地安装py&#xff0c;node.js环境,嫌弃麻烦直接使用第二种 使用git或下载压缩包 git clone https://github.com/mendableai/firecrawl.git 设置环境参数 cd /firecrawl/apps/api 复制环境参数 …

(三)毛子整洁架构(Infrastructure层/DapperHelper/乐观锁)

文章目录 项目地址一、Infrastructure Layer1.1 创建Application层需要的服务1. Clock服务2. Email 服务3. 注册服务 1.2 数据库服务1. 表配置Configurations2. Respository实现3. 数据库链接Factory实现4. Dapper的DataOnly服务实现5. 所有数据库服务注册 1.3 基于RowVersion的…

uni-app微信小程序登录流程详解

文章目录 uni-app微信小程序登录流程实战详解微信小程序登录流程概述1. 获取登录凭证&#xff08;code&#xff09;2. 发送登录请求3. 保存登录态4. 登录状态管理5. 应用登录状态请求拦截器中添加 token自动登录页面路由守卫 使用 Vuex 集中管理登录状态登录组件示例登录流程最…

GUC并发编程和SpringCloud,二者之间的关系

一.提问 我认为&#xff0c;Java开发中&#xff0c;如果项目的每一个小模块需要不同人员并行开发时&#xff0c;就需要使用SpringCloud&#xff1b;如果要解决系统用户激增&#xff0c;就是用GUC并发编程。 这个说法对么&#xff1f; 二.解答 你的理解部分正确&#xff0c;但不…

在 Vue 3 中使用 canvas-confetti 插件

&#x1f389; 在 Vue 3 中使用 canvas-confetti 插件 canvas-confetti 是一个轻量、无依赖的 JavaScript 动画库&#xff0c;用于在网页上展示彩带、庆祝动画。非常适合用于抽奖、支付成功、活动庆祝等场景。 本教程将指导你如何在 Vue 3 项目中集成并使用该插件。 &#x1…

深入解析Spring Boot项目目录结构:从新手到规范实践

一、标准项目结构全景图 典型的Spring Boot项目&#xff08;Maven构建&#xff09;目录结构如下&#xff1a; my-spring-project/ ├── src/ │ ├── main/ │ │ ├── java/ # 核心代码 │ │ │ └── com/ │ │ │ └── exa…

【C语言】宏经典练习题,交换奇偶位

交换奇偶位 写一个宏&#xff0c;可以将一个整数的二进制位的奇数位和偶数位交换。 #define Swap(x) x(((x&0x55555555)<<1)((x&0xaaaaaaaa)>>1)) int main() {int a 10;Swap(a);printf("%d\n", a);return 0; } 写宏的思路&#xff1a; 假设…

VSCode-插件:codegeex:ai coding assistant / 清华智普 AI 插件

一、官网 https://codegeex.cn/ 二、vscode 安装插件 点击安装即可&#xff0c;无需复杂操作&#xff0c;国内软件&#xff0c;无需科学上网&#xff0c;非常友好 三、智能注释 输入 // 或者 空格---后边自动出现注释信息&#xff0c;&#xff0c;按下 Tab 键&#xff0c;进…

FFmpeg 与 C++ 构建音视频处理全链路实战(三)—— FFmpeg 内存模型

经过前面文章的 FFmpeg 编程实践&#xff0c;相信你已经对AVPacket和AVFrame这两个核心结构体不再陌生。当我们编写代码时&#xff0c;频繁调用unref系列 API 释放内存的操作&#xff0c;或许让你心生疑惑&#xff1a;这些函数究竟是如何实现内存释放的&#xff1f;又该在何时准…

c 中的哈希表

哈希是一种可以接受各种类型、大小的输入&#xff0c;输出一个固定长度整数的过程。你可以将哈希理解成一种特殊的映射&#xff0c;哈希映射&#xff0c;将一个理论无限的集合A映射到有限整数集合B上。 哈希函数&#xff1a;哈希函数是哈希过程的核心&#xff0c;它决定了哈希映…

【一次成功!】Ubuntu22.04安装cartographer

之前在ubuntu20.04上成功安装cartographer&#xff0c;但是翻遍全网都没找到官方的22.04安装教程&#xff0c;然后找到小鱼的&#xff0c;试了一下&#xff0c;一次成功&#xff0c;连接如下&#xff1a; gd2l-ros2/docs/humble/chapt10/get_started/2.Carto介绍及安装.md at …

【WPF】Opacity 属性的使用

在WPF&#xff08;Windows Presentation Foundation&#xff09;中&#xff0c;Opacity 属性是定义一个元素透明度的属性&#xff0c;其值范围是从 0.0&#xff08;完全透明&#xff09;到 1.0&#xff08;完全不透明&#xff09;。由于 Opacity 是在 UIElement 类中定义的&…

8天Python从入门到精通【itheima】-6~10

目录 7节-开发出第一个Python程序: 1.在cmd窗口写下第一个最简单的程序:Hello World!!! 9节: 1.如何卸载python: 2.报错:不是可运行的程序 ​编辑 3.报错:无法初始化设备PRN: 4.报错:语法错误——非法的字符 10节-python解释器: 1.python解释器的原理: 2.解…

Mac 3大好用的复制粘贴管理工具对比

剪贴板管理器是查看复制粘贴历史记录的工具&#xff0c;几乎是每个苹果电脑用户必备工具。市面上的工具很多&#xff0c;我结合了功能丰富、设计简洁、交互便利整理了目前3款头部剪贴板应用 Paste、PasteNow、PasteMe。 Paste 优势&#xff1a;老牌剪切板应用&#xff0c;功能…

2025年全国青少年信息素养大赛初赛模拟测试网站崩了的原因及应对比赛流程

2025年全国青少年信息素养大赛初赛模拟测试昨天开始&#xff0c;由于同一时间涌入太多的人&#xff0c;导致网站的服务器奔了&#xff0c;出现了各种状况&#xff0c;导致很多人没有模拟上&#xff0c;大家今天可以刷新或者提前打开网页。 有的是一直“转圈圈”&#xff0c;有的…

02 | 大模型微调 | 从0学习到实战微调 | 从数学概率到千亿参数大模型

一、导读 作为非AI专业技术开发者&#xff08;我是小小爬虫开发工程师&#x1f60b;&#xff09; 本系列文章将围绕《大模型微调》进行学习&#xff08;也是我个人学习的笔记&#xff0c;所以会持续更新&#xff09;&#xff0c;最后以上手实操模型微调的目的。 &#xff08;…

十四、继承与组合(Inheritance Composition)

十四、继承与组合&#xff08;Inheritance & Composition&#xff09; 引言 C最引人注目的特性之一是代码复用。组合&#xff1a;在新类中创建已有类的对象。继承&#xff1a;将新类作为已有类的一个类型来创建。 14.1 组合的语法 Useful.h //C14:Useful.h #ifndef US…

2025年5月-信息系统项目管理师高级-软考高项一般计算题

决策树和期望货币值 加权算法 自制和外购分析 沟通渠道 三点估算PERT 当其他条件一样时&#xff0c;npv越大越好