net中集成敏感词组件的操作步骤

  介绍

小编给大家分享一下。net中集成敏感词组件的操作步骤,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

ToolGood。单词

首先我们要使用的开源组件是ToolGood。单词

。网中集成敏感词组件的操作步骤

通过简单的了解,我们可以知道它可以针对敏感词及其拼音,跳词等变形进行检测,在实际的应用场景中能满足大部分的需求。
具体的用法在这里不做过多的介绍,接下来我们需要做的事情是如何在现有代码中快速且方便的情况下接入敏感词组件。很显然,如果我们按照组件写的示例去操作,会发现需要在现有的代码中进行大量重构的操作,这显然会累垮VS。熟悉水弟的朋友首先就会想到使用AOP的方式去优化处理。

ValidationAttribute

我们先定义两个简单的模型来绑定输入参数,一个是只要输入含有敏感词就会报的错,一个是只要输入含有敏感词就会把相关的字符串替换为*,代码如下:

public  class  MinganCheckInput   ,,,{   ,,,,,,,(MinGanCheck)   ,,,,,,,public  string  Text {组,得到,,,}   ,,,}   ,,,,   ,,,public  class  MinganReplaceInput   ,,,{   ,,,,,,,(MinGanReplace)   ,,,,,,,public  string  Text {组,得到,,,}   ,,,}

其中[MinGanCheck]和[MinGanReplace]是我们定义的特性标记,将其继承ValidationAttribute,就和我们常用的[要求]一样方便,哪里敏感点哪里。

,,///, & lt; summary>   ,,,///,敏感词检查的特性,一匹配就抛异常   ,,,///,& lt;/summary>   ,,,(AttributeUsage (AttributeTargets.Property)]   ,,,public  class  MinGanCheck : ValidationAttribute   ,,,{   ,,,,,,,protected  override  ValidationResult  IsValid (object 价值,ValidationContext  validationContext)   ,,,,,,,{   ,,,,,,,,,,,throw , new  NotImplementedException ();   ,,,,,,,}   ,,,}      ,,,///,& lt; summary>   ,,,///,敏感词替换   ,,,///,& lt;/summary>   ,,,(AttributeUsage (AttributeTargets.Property)]   ,,,public  class  MinGanReplace : ValidationAttribute   ,,,{   ,,,,,,,protected  override  ValidationResult  IsValid (object 价值,ValidationContext  validationContext)   ,,,,,,,{   ,,,,,,,,,,,return  ValidationResult.Success;   ,,,,,,,}   ,,,}

接下来就是实现ValidationAttribute的功能,如果看过水弟写过的aop文章,这时候就不会直接在校验的方法中直接引入ToolGood。话说,这样会带来很大的耦合,也不便于我们替换为其他的敏感词组件或服务,所以我们只要再多一层抽象就可以了。

,,,//,检查   ,,,,,,,protected  override  ValidationResult  IsValid (object 价值,ValidationContext  validationContext)   ,,,,,,,{   ,,,,,,,,,,,return  validationContext.GetService () .IsValid(价值,validationContext);   ,,,,,,,}   ,,,,,,,//,替换   ,,,,,,,protected  override  ValidationResult  IsValid (object 价值,ValidationContext  validationContext)   ,,,,,,,{   ,,,,,,,,,,,validationContext.GetService () .IsValid(价值,validationContext);   ,,,,,,,,,,,return  ValidationResult.Success;   ,,,,,,,}

接着我们分别实现IMinGanCheckValidator和IMinGanReplaceValidator的功能,也即检查和替换功能。

//,检查   ,,public  class  MinGanCheckValidator : IMinGanCheckValidator   ,,,{   ,,,,,,,public  ValidationResult  IsValid (object 价值,ValidationContext  validationContext)   ,,,,,,,{   ,,,,,,,,,,,if  (value  is  string  v)   ,,,,,,,,,,,{   ,,,,,,,,,,,,,,,if  (! String.IsNullOrEmpty (v))   ,,,,,,,,,,,,,,,{   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

net中集成敏感词组件的操作步骤