|
@@ -15,6 +15,7 @@ use Psr\Http\Server\RequestHandlerInterface;
|
|
use Hyperf\HttpMessage\Stream\SwooleStream;
|
|
use Hyperf\HttpMessage\Stream\SwooleStream;
|
|
use Hyperf\Di\Annotation\Inject;
|
|
use Hyperf\Di\Annotation\Inject;
|
|
use Hyperf\Redis\Redis;
|
|
use Hyperf\Redis\Redis;
|
|
|
|
+//use Swoole\Http\Request;
|
|
class SensitiveMiddleware implements MiddlewareInterface
|
|
class SensitiveMiddleware implements MiddlewareInterface
|
|
{
|
|
{
|
|
protected ContainerInterface $container;
|
|
protected ContainerInterface $container;
|
|
@@ -24,6 +25,10 @@ class SensitiveMiddleware implements MiddlewareInterface
|
|
protected HttpResponse $response;
|
|
protected HttpResponse $response;
|
|
#[Inject]
|
|
#[Inject]
|
|
protected Redis $redis;
|
|
protected Redis $redis;
|
|
|
|
+ const STREAM_URL = [
|
|
|
|
+ '/news/addArticle',
|
|
|
|
+ '/news/updateArticle'
|
|
|
|
+ ];
|
|
public function __construct( RequestInterface $request, HttpResponse $response)
|
|
public function __construct( RequestInterface $request, HttpResponse $response)
|
|
{
|
|
{
|
|
$this->request = $request;
|
|
$this->request = $request;
|
|
@@ -32,41 +37,49 @@ class SensitiveMiddleware implements MiddlewareInterface
|
|
|
|
|
|
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
|
|
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
|
|
{
|
|
{
|
|
|
|
+ $uri = $request->getUri();
|
|
|
|
+ // 获取接口路径(不包含查询参数)
|
|
|
|
+ $path = $uri->getPath();
|
|
|
|
+// var_dump("获取接口地址L:",$path);
|
|
try {
|
|
try {
|
|
- $badWords = $this->redis->sMembers('black_word'); //黑名单
|
|
|
|
- $whiteWords = $this->redis->sMembers('white_word');//白名单
|
|
|
|
- // 获取所有请求参数并拼接成文本
|
|
|
|
- $params = $this->request->all();
|
|
|
|
- $concatenated = "";
|
|
|
|
- if($params){
|
|
|
|
- foreach ($params as $value) {
|
|
|
|
- if (is_array($value)) {
|
|
|
|
- // 如果值是数组,将数组元素用逗号连接
|
|
|
|
- $concatenated.= json_encode($value);
|
|
|
|
- } else {
|
|
|
|
- // 如果不是数组,直接拼接
|
|
|
|
- $concatenated.= $value;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- // 遍历违禁词,检查是否在文本中存在
|
|
|
|
- foreach ($badWords as $badWord) {
|
|
|
|
- // 判断该违禁词是否在白名单中,如果在则跳过
|
|
|
|
- if (in_array($badWord, $whiteWords)) {
|
|
|
|
- continue;
|
|
|
|
|
|
+ if(in_array($path,self::STREAM_URL)){
|
|
|
|
+ $badWords = $this->redis->sMembers('black_word'); //黑名单
|
|
|
|
+ $whiteWords = $this->redis->sMembers('white_word');//白名单
|
|
|
|
+ // 获取所有请求参数并拼接成文本
|
|
|
|
+ $params = $this->request->all();
|
|
|
|
+ $concatenated = "";
|
|
|
|
+ if($params){
|
|
|
|
+ foreach ($params as $value) {
|
|
|
|
+ if (is_array($value)) {
|
|
|
|
+ // 如果值是数组,将数组元素用逗号连接
|
|
|
|
+ $concatenated.= json_encode($value);
|
|
|
|
+ } else {
|
|
|
|
+ // 如果不是数组,直接拼接
|
|
|
|
+ $concatenated.= $value;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- if (str_contains($concatenated, $badWord)) {
|
|
|
|
- // 处理找到违禁词的情况,例如返回错误信息
|
|
|
|
- $message = '发现违禁词: '. $badWord;
|
|
|
|
- return $this->response->json(
|
|
|
|
- [
|
|
|
|
- 'code' => 0,
|
|
|
|
- 'data' => [],
|
|
|
|
- 'message' => $message
|
|
|
|
- ]
|
|
|
|
- );
|
|
|
|
|
|
+ // 遍历违禁词,检查是否在文本中存在
|
|
|
|
+ foreach ($badWords as $badWord) {
|
|
|
|
+ // 判断该违禁词是否在白名单中,如果在则跳过
|
|
|
|
+ if (in_array($badWord, $whiteWords)) {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ if (str_contains($concatenated, $badWord)) {
|
|
|
|
+ // 处理找到违禁词的情况,例如返回错误信息
|
|
|
|
+ $message = '发现违禁词: '. $badWord;
|
|
|
|
+ return $this->response->json(
|
|
|
|
+ [
|
|
|
|
+ 'code' => 0,
|
|
|
|
+ 'data' => [],
|
|
|
|
+ 'message' => $message
|
|
|
|
+ ]
|
|
|
|
+ );
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+
|
|
return $handler->handle($request);
|
|
return $handler->handle($request);
|
|
}catch (\Exception $e){
|
|
}catch (\Exception $e){
|
|
return $this->response->json(
|
|
return $this->response->json(
|