Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 38588|Răspunde: 6

[.NET Core] ASP.NET Core (paisprezece) se bazează pe captcha-ul imaginii SkiaSharp

[Copiază linkul]
Postat la 2022-4-4 12:25:53 | | | |
Anterior, când se dezvoltau proiecte ASP.NET folosind .NET Framework, toate erau implementate pe sisteme Windows și nu puteau fi cross-platform, așa că poți folosi System.Drawing pentru a genera coduri de verificare a imaginilor, după cum urmează:

asp.net captcha imagini frumoase MVC
https://www.itsvse.com/thread-4911-1-1.html

WebAPI implementează funcția de cod de verificare grafică
https://www.itsvse.com/thread-7304-1-1.html

Dezvoltarea online cu proiecte .NET Core, generarea captcha-urilor de imagine necesită referire la biblioteca System.Drawing.Common, dar deocamdatăPachetul System.Drawing.Common NuGet este acum grupat astfel:WindowsBiblioteci specifice。 Când se compila pentru sisteme de operare non-Windows, Platform Analyzer avertizează la compilare. Așa cum se vede în figura următoare:

Acest site de apel este accesibil pe toate platformele. "Fontul" este suportat doar pe "ferestre".



Înainte de .NET 6, utilizarea pachetului System.Drawing.Common nu genera niciun avertisment la compilare și nu arunca excepții la runtime. Începând cu .NET 6, Platform Analyzer emite un avertisment de compilare la compilarea codului de referință pentru sistemele de operare non-Windows. De asemenea, dacă opțiunea de configurare nu este setată, va fi aruncată următoarea excepție la runtime:


System.TypeInitializationException : Inițializatorul de tip pentru 'Gdip' a aruncat o excepție.
      ---- System.PlatformNotSupportedException : System.Drawing.Common nu este suportat pe platformele non-Windows. VedeaAutentificarea cu hyperlink este vizibilă.Pentru mai multe informații.
      Stivei:
           la System.Drawing.SafeNativeMethods.Gdip.GdipCreateBitmapFromFile(String filename, IntPtr& bitmap)
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs(42,0): la System.Drawing.Bitmap.. ctor(Nume de fișier de șir, folosirea booleană)
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs(25,0): la System.Drawing.Bitmap.. ctor (Nume fișier String)
        /_/src/libraries/System.Resources.ResourceManager/tests/ResourceManagerTests.cs(270,0): la System.Resources.Tests.ResourceManagerTests.EnglishImageResourceData()+ MoveNext()
        /_/src/libraries/System.Linq/src/System/Linq/Select.cs(136,0): la System.Linq.Enumerable.SelectEnumerableIterator'2.MoveNext()
        ----- Trasele Inner Stack -----
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/LibraryResolver.cs(31,0): la System.Drawing.LibraryResolver.EnsureRegistered()
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/GdiplusNative.Unix.cs(65,0): la adresa System.Drawing.SafeNativeMethods.Gdip.PlatformInitialize()
        /_/src/libraries/System.Drawing.Common/src/System/Drawing/Gdiplus.cs(27,0): la System.Drawing.SafeNativeMethods.Gdip.. cctor()

Referință de eroare:

Probleme cu watermarking-ul .NET Core pe imaginile Linux
https://www.itsvse.com/thread-9605-1-1.html

Pentru procesarea imaginilor cross-platform, documentația oficială Microsoft recomandă utilizarea următoarelor biblioteci:

  • ImageSharp
  • SkiaSharp
  • Microsoft.Maui.Graphics

Referință:Autentificarea cu hyperlink este vizibilă.

Acest articol folosește biblioteca SkiaSharp pentru a genera CAPTCHA grafic,SkiaSharp este o API grafică 2D cross-platform pentru platforma .NET, bazată pe biblioteca grafică Skia (skia.org) a Google.。 Oferă un API 2D cuprinzător care poate fi folosit pe modele mobile, server și desktop pentru a randa imagini.

Adresă:Autentificarea cu hyperlink este vizibilă.

Mai întâi, creează un nou proiect ASP.NET Core 6 și o referințăSkiaSharpBibliotecile relevante sunt următoarele:

Rețineți că, dacă proiectul trebuie implementat pe un sistem Linux, sunt necesare referințeSkiaSharp.NativeAssets.LinuxClasă, altfel eroarea va fi următoarea:

Apr 03 18:51:06 raspberrypi dotnet[6203]: fail: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[1]
Apr 03 18:51:06 raspberrypi dotnet[6203]: A apărut o excepție negestionată în timpul executării cererii.
03 apr 18:51:06 raspberrypi dotnet[6203]: System.TypeInitializationException: Inițializatorul de tip pentru 'SkiaSharp.SKImageInfo' a aruncat o excepție.
Apr 03 18:51:06 raspberrypi dotnet[6203]: ---> System.DllNotFoundException: Nu se poate încărca biblioteca partajată 'libSkiaSharp' sau una dintre dependențele acesteia. Pentru a ajuta la diagnosticarea problemelor de încărcare, luați în considerare setarea variabilei de mediu LD_DEBUG: liblibSkiaSharp: cannot open shared object file: No such file or directory
Apr 03 18:51:06 raspberrypi dotnet[6203]: la SkiaSharp.SkiaApi.sk_colortype_get_default_8888()
03 apr 18:51:06 raspberrypi dotnet[6203]: la SkiaSharp.SKImageInfo:. cctor()
Apr 03 18:51:06 raspberrypi dotnet[6203]: --- Sfârșitul stivei interioare de excepții ---
Apr 03 18:51:06 raspberrypi dotnet[6203]: la HomeCloud.ImageCaptcha.GetCaptcha(String captchaText, Int32 width, Int32 height, Int32 lineNum, Int32 lineStrookeWidth) în C: \Utilizatori\itsvse_pc\sursă\repos\ConsoleApp1\HomeCloud\ImageCaptcha.cs:linia 184
Apr 03 18:51:06 raspberrypi dotnet[6203]: la HomeCloud.Controllers.HomeController.Test() în C:\Users\itsvse_pc\source\repos\ConsoleApp1\HomeCloud\Controllers\HomeController.cs :linia 80
Apr 03 18:51:06 raspberrypi dotnet[6203]: la lambda_method34(Închidere, Obiect, Obiect[] )

Pentru a lua în considerare că unele fonturi pot lipsi în alte sisteme, ceea ce duce la imposibilitatea de a afișa în mod normal informațiile codului de verificare, trebuie să copiem manual fonturile în proiect, să creăm un nou folder fonts în proiect și să copiem fonturile în acesta, așa cum se arată în figura de mai jos:



Configurația este următoarea:

Conform materialelor de referință de pe Internet, codul grafic de verificare generat de test este următorul:



CAPTCHA-ul generat are două dezavantaje:CAPTCHA-ul este complet negru (ușor de recunoscut prin OCR), iar literele CAPTCHA sunt înghesuite fără spațierePentru a rezolva aceste două probleme, am optimizat codul astfel:

Codul controlerului HomeController este următorul:

Randările finale sunt următoarele:


În final, atașează fișierul font:

Turiști, dacă vreți să vedeți conținutul ascuns al acestei postări, vă rogRăspunde


(Sfârșit)




Precedent:[Întoarce]. NET 6 Funcționalitate Nouă Enumerable.Chunk()
Următor:Angular previne declanșarea evenimentului de click părinte
 Proprietarul| Postat la 2022-4-4 12:28:35 |
recenzie

ASP.NET Core (XIII) pentru a determina dacă este o cerere Ajax sau nu
https://www.itsvse.com/thread-10284-1-1.html

ASP.NET Core (douăsprezece) front-end JS, bundling și compresie CSS
https://www.itsvse.com/thread-10282-1-1.html

ASP.NET ruta Core (XI) pentru endpoint adaugă middleware pentru a afișa toate serviciile DI
https://www.itsvse.com/thread-10269-1-1.html

ASP.NET Explicație detaliată a priorităților de configurare în Core(10).
https://www.itsvse.com/thread-10265-1-1.html

ASP.NET Explicație detaliată a middleware-ului Middleware din Core (9).
https://www.itsvse.com/thread-9647-1-1.html

ASP.NET Explicație detaliată a Middleware-ului de bază
https://www.itsvse.com/thread-8126-1-1.html

ASP.NET prăpastie a parametrilor impliciti ai interfeței Swagger în Core(8).
https://www.itsvse.com/thread-9640-1-1.html

ASP.NET Core (7) Analiză aprofundată a codului sursă al framework-ului
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Core (VI) DI obține manual metoda de injectare a obiectelor
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET Core (cinci) se bazează pe tranzacții distribuite CAP
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Filtrul Core(4) validare unificată a modelului ModelState
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Core (iii) Crearea dinamică a instanțelor folosind ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Nucleu (2) Repornește aplicația prin cod
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) folosește cache Redis
https://www.itsvse.com/thread-9393-1-1.html
Postat la 2022-4-4 15:02:24 |
Învață să înveți
Postat la 2022-4-13 08:58:42 |
E bine, îmi place. Mulțumesc că ai împărtășit!
Postat la 2022-4-14 09:46:41 |
Învață cum funcționează marele om, mulțumesc că ai împărtășit
Postat la 2022-8-5 16:25:05 |
Șeful a muncit din greu
 Proprietarul| Postat la 2024-11-25 10:33:43 |
SixLabors.ImageSharp este, de asemenea, o bibliotecă excelentă pentru procesarea imaginilor cross-platform
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com