using Bunny.Common.Filter;
using Bunny.Service.Job.JobService;
using Lazy.Captcha.Core;
using Lazy.Captcha.Core.Generator;
using SkiaSharp;
namespace Bunny.WebApi.Configuration;
public static class ServiceRegistration
{
///
/// 注入后台服务相关
/// 用于添加所以Job服务,之后在BaseConfig中进行调用
///
///
public static void AddApplicationBackendServices(this WebApplicationBuilder builder)
{
// 测试注入后台服务
builder.AddCreateSimpleJobService();
builder.AddCronJobService();
}
///
/// 配置过滤器
///
///
public static void AddFilterConfigInitialize(this WebApplicationBuilder builder)
{
// 添加自定义过滤器---全局异常捕获
builder.Services.AddControllers(option =>
{
option.Filters.Add();
option.Filters.Add();
option.Filters.Add();
option.Filters.Add();
option.Filters.Add(typeof(CacheIiAsyncActionFilter));
});
}
///
/// 添加验证码配置内容
///
///
public static void AddCaptcha(this WebApplicationBuilder builder)
{
var service = builder.Services;
// 使用图形验证码
service.AddDistributedMemoryCache();
// 验证码相关配置内容
service.AddCaptcha(options =>
{
options.CaptchaType = CaptchaType.DEFAULT; // 验证码类型
options.CodeLength = 4; // 验证码长度
options.ExpirySeconds = 60; // 过期时间(单位/秒)
options.IgnoreCase = true; // 比较忽略大小写
options.ImageOption.Animation = true; // 是否启用动画
options.ImageOption.Width = 130; // 验证码宽度
options.ImageOption.Height = 48; // 验证码高度
options.ImageOption.BackgroundColor = SKColors.White;
options.ImageOption.BubbleCount = 6; // 气泡数量
options.ImageOption.BubbleMinRadius = 2; // 气泡最小半径
options.ImageOption.BubbleMaxRadius = 6; // 气泡最大半径
options.ImageOption.BubbleThickness = 2; // 气泡边沿厚度
options.ImageOption.InterferenceLineCount = 2; // 干扰线数量
options.ImageOption.FontSize = 36; // 字体大小
options.ImageOption.FontFamily = DefaultFontFamilys.Instance.Kaiti; // 字体,中文使用kaiti,其他字符可根据喜好设置
});
}
}