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.pswp.cn/bicheng/80890.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/80890.shtml
英文地址,請注明出處:http://en.pswp.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越大越好