Ohjelmointi

Kuinka luoda reittirajoituksia ASP.NET Core -sovellukseen

ASP.NET Core -sovelluksen reittirajoituksia käytetään suodattamaan tai rajoittamaan ei-toivottujen tietojen pääsyä ohjaimen toimintoihin. ASP.NET Core -reitityksen alustusohjeet ovat edellisessä artikkelissani, joka koskee attribuuttipohjaista reititystä verrattuna yleissopimuspohjaiseen reititykseen ASP.NET Core -sovelluksessa. Tässä artikkelissa ylitetään perusasiat ja tutkitaan edistyneitä toimintoja reittirajoitusten avulla.

Jotta voit työskennellä tässä artikkelissa annettujen koodiesimerkkien kanssa, järjestelmässäsi on oltava asennettuna Visual Studio 2019. Jos sinulla ei vielä ole kopiota, voit ladata Visual Studio 2019 täältä.

Luo ASP.NET Core MVC -projekti Visual Studio 2019: ssä

Ensinnäkin, luodaan ASP.Net Core -projekti Visual Studio 2019: ssä. Olettaen, että Visual Studio 2019 on asennettu järjestelmään, luo uusi ASP.Net Core -projekti Visual Studioon noudattamalla alla olevia ohjeita.

  1. Käynnistä Visual Studio IDE.
  2. Napsauta Luo uusi projekti.
  3. Valitse Luo uusi projekti -ikkunassa ”ASP.NET Core Web Application” näytetystä malliluettelosta.
  4. Napsauta Seuraava.
  5. Määritä uuden projektin määritys -ikkunassa uuden projektin nimi ja sijainti.
  6. Valitse vaihtoehtoisesti Sijoita ratkaisu ja projekti samaan hakemistoon -valintaruutu mieltymystesi mukaan.
  7. Napsauta Luo.
  8. Valitse seuraavassa näkyvässä "Luo uusi ASP.NET-ydinverkkosovellus" -ikkunassa .NET Core ajonaikaisena ja ASP.NET Core 3.1 (tai uudempi) yläreunan avattavasta luettelosta.
  9. Luo uusi ASP.NET Core MVC -sovellus valitsemalla projektisivuksi ”Web-sovellus (Model-View-Controller)”.
  10. Varmista, että valintaruudut Ota Docker-tuki käyttöön ja Määritä HTTPS: lle ei ole valittu, koska emme käytä näitä ominaisuuksia täällä.
  11. Varmista, että todennuksen asetuksena on Ei todentamista, koska emme myöskään käytä todennusta.
  12. Napsauta Luo.

Näiden vaiheiden seuraamalla luodaan uusi ASP.NET Core MVC -projekti Visual Studio 2019: ssä. Käytämme tätä projektia alla olevissa osioissa havainnollistaaksemme, kuinka voimme käyttää reittirajoituksia ASP.NET Core 3.1: ssä.

RouteCollection-luokka ASP.NET Core -sovelluksessa

ASP.NET Core -sovelluksen RouteTable-luokka sisältää ominaisuuden nimeltä Routes, joka tallentaa kaikki reitit RouteCollection-tiedostona. RouteCollection-luokka sisältää joitain laajennusmenetelmiä, joita voidaan käyttää reittien kartoittamiseen tai ohittamiseen.

MapRoute on ylikuormitettu menetelmä, joka hyväksyy rajoitukset parametrina. Tämän avulla voit siirtää rajoituksesi reitille. Seuraava on MapRoute-menetelmän ilmoitus.

julkinen staattinen reittikartta-reitti (tämä RouteCollection-reitti, merkkijonon nimi,

merkkijonon URL-osoite, oletusarvot, objektirajoitukset);

IRouteConstraint-liitäntä ASP.NET Core -sovelluksessa

IRouteConstraint-käyttöliittymä on sopimus, joka sisältää vain yhden Match-nimisen menetelmän ilmoituksen. Tätä käyttöliittymää on laajennettava luokalla ja siinä käytettävä ottelutapa sen tarkistamiseksi, onko tietty URL-parametri voimassa rajoitukselle. Näin IRouteConstraint-rajapinta määritetään:

nimitila Microsoft.AspNetCore.Routing

{

julkinen käyttöliittymä IRouteConstraint

    {

bool-ottelu (

HttpContext httpContext,

IRouter-reitti,

merkkijono routeKey,

RouteValueDictionary-arvot,

RouteDirection routeDirection);

    }

}

ConstraintMap-sanakirja ASP.NET Core -sovelluksessa

ConstraintMap on sanakirja, joka sisältää luettelon reittirajoituksista, joka kartoittaa reittirajoitusavaimet IRouteConstraint-toteutuksiin. Alla annettu koodinpätkä kuvaa, kuinka voit lisätä mukautetut rajoituksesi tähän sanakirjaan.

public void ConfigureServices (IServiceCollection-palvelut)

{  

Kokoonpano (routeOptions =>

  { 

routeOptions.ConstraintMap.Add ("emailconstraint", typeof (EmailRouteContraint));

  }); 

Ota käyttöön IRouteConstraint Match -menetelmä ASP.NET Core -sovelluksessa

Mukautetun reittirajoituksen luomiseksi sinun on luotava luokka, joka laajentaa IRouteConstraint-käyttöliittymää ja toteuttaa sen Match-menetelmän. Rajoituksella voidaan estää ei-toivotut saapuvat pyynnöt ja estää reittiä vastaamasta, ellei tietty ehto täyty. Voit esimerkiksi varmistaa, että toimintomenetelmälle välitetty parametri on aina kokonaisluku.

Match-menetelmä hyväksyy seuraavat parametrit:

  • HttpContext - kapseloi kaikki HTTP-tiedot pyynnöstä
  • IRouter - edustaa reititintä, joka soveltaa rajoituksia
  • RouteKey - edustaa tarkistettavaa reittiparametriä
  • RouteDirection - luettelo, joka sisältää kaksi arvoa, nimittäin IncomingRequest ja UrlGeneration, ja jota käytetään osoittamaan, käsitelläänkö URL-osoitetta HTTP-pyynnöstä vai luodaanko URL-osoite
  • RouteValues ​​- sisältää URL-parametrit

Mukautetun reittirajoituksen rakenne ASP.NET Core -sovelluksessa

Tässä on esimerkki mukautetun reittirajoituksen rakenteesta:

public class CustomRouteConstraint: IRouteConstraint

    {

public bool Match (HttpContext httpContext, IRouter-reitti,

merkkijono routeKey, RouteValueDictionary-arvot,

RouteDirection routeDirection)

        {

heittää uusi NotImplementedException ();

        }

    }

Mukautettu reittirajoitusesimerkki ASP.NET Core -sovelluksessa

Toteutetaan nyt mukautettu reittirajoitus, joka voi tarkistaa sähköpostitunnukset. Luo ensin luokka, joka laajentaa IRouteConstraint-käyttöliittymää ja toteuttaa Match-menetelmän. Seuraava koodinpätkä näyttää mukautetun reittirajoitusluokan nimeltä EmailRouteContraint, joka laajentaa IRouteConstraint-käyttöliittymää.

public class EmailRouteContraint: IRouteConstraint

    {

public bool Match (HttpContext httpContext, IRouter-reitti,

merkkijono routeKey, RouteValueDictionary-arvot,

RouteDirection routeDirection)

        {

palaa tosi;

        }

    }

Seuraava koodiluettelo näyttää EmailRouteConstraint-luokan, jossa on sovitettu Match-menetelmä.

public class EmailRouteContraint: IRouteConstraint

    {

public bool Match (HttpContext httpContext, IRouter-reitti,

merkkijono routeKey, RouteValueDictionary-arvot,

RouteDirection routeDirection)

        {

if (arvot.TryGetValue (routeKey, out var routeValue))

            {

var parametriValueString = Muunna.ToString (routeValue,

CultureInfo.InvariantCulture);

palauta IsEmailAddressValid (parametriValueString);

            }

return false;

        }

yksityinen Bool IsEmailAddressValid (merkkijono emailAddress)

        {

palaa tosi;

        }

    }

Huomaa, että IsEmailAddressValid-menetelmä palauttaa tässä vain arvon "true". Jätän sinun tehtäväsi kirjoittaa tarvittavan koodin sähköpostiosoitteen vahvistamiseksi.

Rekisteröi mukautettu reittirajoitus ASP.NET Core -palvelimeen

Sinun tulisi rekisteröidä mukautettu reittirajoitus reititysjärjestelmässä Startup-luokan ConfigureServices-menetelmässä. Seuraava koodinpätkä kuvaa tätä.

public void ConfigureServices (IServiceCollection-palvelut)

      {

palvelut.AddControllersWithViews ();

Kokoonpano (routeOptions =>

          {

routeOptions.ConstraintMap.Add ("ERC",

typeof (EmailRouteContraint));

          });

      }

Sinun tulisi myös määrittää mukautettu reittirajoitus Startup-luokan Configure-menetelmässä, kuten alla olevassa koodinpätkässä näkyy.

app.UseEndpoints (päätepisteet =>

{

päätepisteet.MapControllerRoute (

nimi: "oletus",

rajoitteet: uusi {ERC = new EmailRouteContraint ()},

malli: "{controller = Home} / {action = Index} / {id?}");

});

Ja siinä se on. Voit nyt määrittää rajoituksen ohjaimessasi tai toimintamenetelmissäsi ja aloittaa sovelluksen käytön.

ASP.NET Core -ajo tarkistaa, jos määritetty malli ja reittirajoitukset vastaavat saapuvan pyynnön mallia ja arvoja. Rajoituksen vahvistuslogiikka määritetään mukautetun reittirajoituksen Match-menetelmän sisällä. Voit hyödyntää rajoituksia tarpeettomien pyyntöjen välttämiseksi ja vahvistaa reitti-arvot ennen pyynnön siirtämistä toimintamenetelmälle.

Kuinka tehdä enemmän ASP.NET Core -sovelluksessa:

  • Kuinka hallita käyttäjän salaisuuksia ASP.NET Core -palvelussa
  • Kuinka rakentaa gRPC-sovelluksia ASP.NET Core -sovellukseen
  • Pyynnön uudelleenohjaaminen ASP.NET Core -sovelluksessa
  • Attribuuttien reitityksen käyttäminen ASP.NET Core -sovelluksessa
  • Parametrien siirtäminen toimintamenetelmiin ASP.NET Core MVC: ssä
  • Kuinka käyttää API-analysaattoreita ASP.NET Core -sovelluksessa
  • Kuinka käyttää reittitunnuksia ASP.NET Core -sovelluksessa
  • Kuinka käyttää API-versiota ASP.NET Core -sovelluksessa
  • Kuinka käyttää tiedonsiirtoobjekteja ASP.NET Core 3.1: ssä
  • Kuinka käsitellä 404 virhettä ASP.NET Core MVC: ssä
  • Riippuvuusinjektion käyttäminen ASP.NET Core 3.1 -suodattimissa
  • Asetuskuvion käyttäminen ASP.NET Core -sovelluksessa
  • Kuinka käyttää päätepisteiden reititystä ASP.NET Core 3.0 MVC: ssä
  • Tietojen vieminen Exceliin ASP.NET Core 3.0: ssa
  • LoggerMessagen käyttäminen ASP.NET Core 3.0: ssa
  • Kuinka lähettää sähköposteja ASP.NET Core -sovelluksessa
  • Tietojen kirjaaminen SQL Server -palvelimeen ASP.NET Core -sovelluksessa
  • Työn ajoitus Quartz.NET: n avulla ASP.NET Core -sovelluksessa
  • Tietojen palauttaminen ASP.NET Core Web -sovellusliittymästä
  • Kuinka muotoilla vastaustiedot ASP.NET Core -sovelluksessa
  • ASP.NET Core Web -sovellusliittymän kuluttaminen RestSharpin avulla
  • Asynkronointitoimintojen suorittaminen Dapperin avulla
  • Ominaisuuslippujen käyttäminen ASP.NET Core -sovelluksessa
  • FromServices-määritteen käyttäminen ASP.NET Core -sovelluksessa
  • Kuinka toimia evästeiden kanssa ASP.NET Core -sovelluksessa
  • Staattisten tiedostojen käsittely ASP.NET Core -sovelluksessa
  • URL: n uudelleenkirjoittamisen väliohjelmiston käyttäminen ASP.NET Core -sovelluksessa
  • Nopeudenrajoituksen toteuttaminen ASP.NET Core -sovelluksessa
  • Kuinka käyttää Azure Application Insightsia ASP.NET Core -sovelluksessa
  • NLog-lisäominaisuuksien käyttäminen ASP.NET Core -sovelluksessa
  • Kuinka käsitellä virheitä ASP.NET Web API: ssa
  • Kuinka toteuttaa maailmanlaajuinen poikkeusten käsittely ASP.NET Core MVC: ssä
  • Kuinka käsitellä nolla-arvoja ASP.NET Core MVC: ssä
  • Edistynyt versiointi ASP.NET Core Web -sovellusliittymässä
  • Kuinka työskennellä työntekijöiden palveluiden kanssa ASP.NET Core -sovelluksessa
  • Tietosuoja-sovellusliittymän käyttö ASP.NET Core -sovelluksessa
  • Ehdollisen väliohjelmiston käyttäminen ASP.NET Core -sovelluksessa
  • Istunnon tilan käyttäminen ASP.NET Core -sovelluksessa
  • Kuinka kirjoittaa tehokkaita ohjaimia ASP.NET Core -sovellukseen