GitHub - houbb/sensitive-word-admin: The sensitive tool admin.(敏感词工具对应的控台) (original) (raw)

项目介绍

平台简介

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

为了实现一个让用户开箱即用的敏感词控台而努力~

Build Status Maven Central Open Source Love

变更

变更日志

项目推荐

下面是一些日志、加解密、脱敏安全相关的库推荐:

项目 介绍
sensitive-word 高性能敏感词核心库
sensitive-word-admin 敏感词控台,前后端分离
sensitive 高性能日志脱敏组件
auto-log 统一日志切面组件,支持全链路traceId
encryption-local 离线加密机组件
encryption 加密机标准API+本地客户端
encryption-server 加密机服务

本地启动

依赖

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.DruidDataSource driverClassName: com.mysql.cj.jdbc.Driver druid: # 主库数据源 master: url: jdbc:mysql://localhost:3306/sensitive_word?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: root password: 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/contains string boolean 是否包含敏感词
/api/sensitiveWord/findAll string List 获取所有的敏感词
/api/sensitiveWord/findFist string string 获取第一个的敏感词
/api/sensitiveWord/replace string string 获取替换后的结果
/api/sensitiveWord/tags string Set 获取敏感词的标签列表

接口验证

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 {

@Autowired
private MyDdWordAllow myDdWordAllow;

@Autowired
private MyDdWordDeny myDdWordDeny;

/**
 * 自定义单词标签
 *
 * @since v1.4.0
 */
@Autowired
private MyDdWordTags myDdWordTags;

/**
 * 初始化引导类
 * @return 初始化引导类
 * @since 1.0.0
 */
@Bean
public 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

待改进点

技术鸣谢

拓展阅读

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 拼写检测