This commit is contained in:
王炜翔 2024-11-04 11:03:25 +08:00
parent ad2a431669
commit 61e8f98af8
4 changed files with 47 additions and 33 deletions

View File

@ -241,16 +241,12 @@ namespace asg_form.Controllers
var captchaService = new CaptchaService(); var captchaService = new CaptchaService();
var (captchaImage, captchaCode) = captchaService.GenerateCaptcha(); var (captchaImage, captchaCode) = captchaService.GenerateCaptcha();
captchaNow=captchaCode; captchaNow=captchaCode;
/*var offTime = new DateTime(); var offTime = new DateTime();
using (var db = new TestDbContext()) using (var db = new TestDbContext())
{ {
var query = db.T_captcha_check.AsQueryable(); var query = db.T_captcha_check.AsQueryable();
var currentDateTime = DateTime.Now; var currentDateTime = DateTime.Now;
var fiveMinutesAgo = currentDateTime.AddMinutes(-5);
var recordsToDelete = db.T_captcha_check
.Where(x => DateTime.TryParse(x.off_time,out offTime) && offTime < fiveMinutesAgo)
.ToList();
db.T_captcha_check.RemoveRange(recordsToDelete);
int maxId = query.Max(n => n.id); int maxId = query.Max(n => n.id);
var msg = new capData var msg = new capData
{ {
@ -260,8 +256,8 @@ namespace asg_form.Controllers
}; };
db.Add(msg); db.Add(msg);
db.SaveChanges(); db.SaveChanges();
}*/ }
return Ok(new { code = 200, captchaImage ,captchaCode}); return Ok(new { code = 200, captchaImage});
} }
catch (Exception ex) { catch (Exception ex) {
return Ok(new { code = 500, message = "服务器错误", ex }); return Ok(new { code = 500, message = "服务器错误", ex });

View File

@ -2,49 +2,63 @@
using System.Drawing; using System.Drawing;
using System.Drawing.Imaging; using System.Drawing.Imaging;
using System.IO; using System.IO;
using SkiaSharp;
using System.IO;
public class CaptchaService public class CaptchaService
{ {
public string generatedCaptchaCode; public string generatedCaptchaCode;
public int wrp = 0; public int wrp = 0;
// 生成验证码图像并返回Base64字符串 // 生成验证码图像并返回Base64字符串
public (string captchaImage, string captchaCode) GenerateCaptcha()
{
public (string captchaImage, string captchaCode) GenerateCaptcha()
{
string wp = "123"; string wp = "123";
try try
{ {
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);
string generatedCaptchaCode = GenerateRandomCode(4); // 生成4位随机字符 string generatedCaptchaCode = GenerateRandomCode(4); // 生成4位随机字符
Bitmap bitmap = new Bitmap(100, 40); int width = 100, height = 40;
wp = "122";
using (Graphics g = Graphics.FromImage(bitmap)) using (var bitmap = new SKBitmap(width, height))
{ {
g.Clear(Color.White); wp = "111";
using (Font font = new Font("Arial", 20)) using (var canvas = new SKCanvas(bitmap))
{ {
g.DrawString(generatedCaptchaCode, font, Brushes.Black, 10, 10); wp = "333";
canvas.Clear(SKColors.White);
using (var paint = new SKPaint())
{
paint.Color = SKColors.Black;
paint.TextSize = 20;
paint.IsAntialias = true;
canvas.DrawText(generatedCaptchaCode, 10, 30, paint);
} }
} }
wp = "233"; wp = "222";
using (MemoryStream ms = new MemoryStream()) using (var image = SKImage.FromBitmap(bitmap))
using (var data = image.Encode(SKEncodedImageFormat.Png, 100))
using (var ms = new MemoryStream())
{ {
bitmap.Save(ms, ImageFormat.Png); data.SaveTo(ms);
string base64Image = Convert.ToBase64String(ms.ToArray()); string base64Image = Convert.ToBase64String(ms.ToArray());
return (base64Image, generatedCaptchaCode); return (base64Image, generatedCaptchaCode);
} }
} }
}
catch (Exception ex) catch (Exception ex)
{ {
Console.WriteLine($"Error generating captcha: {ex.Message}"); Console.WriteLine($"Error generating captcha: {ex.Message}");
return (ex.Message, wp); return (ex.Message, wp);
} }
} }
// 生成随机字符
private string GenerateRandomCode(int length) // 生成随机字符
private string GenerateRandomCode(int length)
{ {
const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ012345689"; const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ012345689";
Random random = new Random(); Random random = new Random();

View File

@ -80,8 +80,6 @@ options.AddDefaultPolicy(builder => builder.WithOrigins(urls)
IServiceCollection services = builder.Services; IServiceCollection services = builder.Services;
@ -160,7 +158,7 @@ app.UseKnife4UI(c =>
}); });
app.UseStaticFiles(); app.UseStaticFiles();
AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);
//发布时服务器注册静态资源 //发布时服务器注册静态资源
@ -242,4 +240,5 @@ new Thread(o =>
{ IsBackground = true }.Start(); { IsBackground = true }.Start();
app.Run(); app.Run();

View File

@ -65,10 +65,15 @@
<PackageReference Include="Panda.SimpleExcel" Version="1.3.2" /> <PackageReference Include="Panda.SimpleExcel" Version="1.3.2" />
<PackageReference Include="RestSharp" Version="106.12.0" /> <PackageReference Include="RestSharp" Version="106.12.0" />
<PackageReference Include="SkiaSharp" Version="2.88.8" />
<PackageReference Include="SkiaSharp.NativeAssets.Linux" Version="2.88.8" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" /> <PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
<PackageReference Include="System.Drawing.Common" Version="7.0.0" />
<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.1.0" /> <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.1.0" />
<PackageReference Include="System.Net.Http" Version="4.3.4" /> <PackageReference Include="System.Net.Http" Version="4.3.4" />
<PackageReference Include="Zack.EventBus" Version="1.1.3" /> <PackageReference Include="Zack.EventBus" Version="1.1.3" />
<PackageReference Include="System.Drawing.Common" Version="7.0.0" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>