modules/00_Admin/Admin.Core/Infrastructure/Defaults/DefaultVerifyCodeProvider.cs
(开头部分) 3KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using System;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.Extensions.Options;
using Mkh.Auth.Abstractions.Options;
using Mkh.Cache.Abstractions;
using Mkh.Utils.Annotations;
using Mkh.Utils.Helpers;
using SixLabors.Fonts;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Drawing.Processing;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing;
namespace Mkh.Mod.Admin.Core.Infrastructure.Defaults;
/// <summary>
/// 默认验证码提供器
/// </summary>
[SingletonInject]
internal class DefaultVerifyCodeProvider : IVerifyCodeProvider
{
//颜色列表,用于验证码、噪线、噪点
private readonly Color[] _colors = new[] { Color.Black, Color.Red, Color.Blue, Color.Green, Color.Orange, Color.Brown, Color.Brown, Color.DarkBlue };
private readonly StringHelper _stringHelper;
private readonly ICacheProvider _cacheHandler;
private readonly IOptionsMonitor<AuthOptions> _authOptions;
private readonly AdminCacheKeys _cacheKeys;
public DefaultVerifyCodeProvider(StringHelper stringHelper, ICacheProvider cacheHandler, IOptionsMonitor<AuthOptions> authOptions, AdminCacheKeys cacheKeys)
{
_stringHelper = stringHelper;
_cacheHandler = cacheHandler;
_authOptions = authOptions;
_cacheKeys = cacheKeys;
}
public async Task<VerifyCodeModel> Create()
{
var code = _stringHelper.GenerateRandomNumber();
var bytes = DrawVerifyCode(code);
var id = Guid.NewGuid().ToString();
await _cacheHandler.Set(_cacheKeys.VerifyCode(id), code, 5);
return new VerifyCodeModel
{
Id = id,
Base64 = "data:image/png;base64," + Convert.ToBase64String(bytes)
};
}
public async Task<IResultModel> Verify(string id, string code)
{
//启用验证码
后面还有 58 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
