禁用默认 _Template_调用DisableDefaultTemplates即可:
builder.Services.AddSlideCaptcha(builder.Configuration)
.DisableDefaultTemplates();
- Validator自定义
类库提供 SimpleValidator , BasicValidator 两个实现。
SimpleValidator 仅位置验证,BasicValidator除位置验证外,同时对轨迹做验证。BasicValidator由于算法的原因,容易误判,因此类库默认用SimpleValidator_ 做为默认 Validator 。
自定义 Validator 继承 BaseValidator , BaseValidator 提供了基本的位置验证。
举一个栗子:
public class CustomValidator: BaseValidator
{
public override bool ValidateCore(SlideTrack slideTrack, CaptchaValidateData captchaValidateData)
{
// BaseValidator已做了基本滑块与凹槽的对齐验证,这里做其他验证
return true;
}
}
替换默认的Validator
builder.Services.AddSlideCaptcha(builder.Configuration);
.ReplaceValidator<CustomValidator>();
- ResourceProvider自定义
除了通过Options配置Background和Template外,你也可以通过自定义ResourceProvider的形式提供Background和Template。
public class CustomResourceProvider : IResourceProvider
{
public List<Resource> Backgrounds()
{
return Enumerable.Range(1, 10)
.ToList()
.Select(e => new Resource(Core.Resources.Handler.FileResourceHandler.TYPE, $"wwwroot/images/background/{e}.jpg"))
.ToList();
}
// 这里返回自定义的Template
public List<TemplatePair> Templates()
{
return new List<TemplatePair>();
}
}
注册ResourceProvider
builder.Services.AddSlideCaptcha(builder.Configuration)
.AddResourceProvider<CustomResourceProvider>();
- 自定义ResourceHandler
public class UrlResourceHandler : IResourceHandler
{
public const string Type = "url";
public bool CanHandle(string handlerType)
{
return handlerType == Type;
}
/// <summary>
/// 这里仅演示,仍然从本地读取。实际需要通过Http读取
/// </summary>
/// <param name="resource"></param>
/// <returns></returns>
/// <exception cref="ArgumentNullException"></exception>
public byte[] Handle(Resource resource)
{
if (resource == null) throw new ArgumentNullException(nameof(resource));
return File.ReadAllBytes(resource.Data);
}
}
注册ResourceHandler
builder.Services.AddSlideCaptcha(builder.Configuration)
.AddResourceHandler<UrlResourceHandler>();
原文地址:https://www.cnblogs.com/readafterme/p/16098532.html