Autorisatie via data-annotaties in .NET

Geschreven door: op maandag 31 oktober 2016

Leestijd:

Sommige webapplicaties die online staan moeten alleen toegankelijk zijn voor bepaalde ingelogde gebruikers of bezoekers vanaf een reeks IP-adressen. In andere gevallen wil je dat de webapplicatie zelf beschikbaar is voor alle bezoekers, maar bepaalde methodes niet.

.NET heeft verschillende mogelijkheden om hiervoor te zorgen. Bijvoorbeeld via een validatie via code in de methode zelf of via data-annotaties. Die laatste staan hieronder beschreven.

Methoden in .NET

Een methode kan een bepaalde functie zijn die wordt aangeroepen door een bezoeker om een PDF-bestand te downloaden of bijvoorbeeld een view zoals een overzicht met alle gebruikers in de webapplicatie. In het MVC-framework van .NET zijn deze methoden Actions binnen Controllers, waarbij de methode altijd een ActionResult teruggeeft, in het geval van een view is dat View en in het geval van het downloaden van een bestand, kan dat een File zijn. Validatie via data-annotaties kan worden toegepast op zowel Controller als Action.

Data-annotaties

Data-annotaties zijn stukjes tekst die extra context of informatie geven aan de code, zonder de code zelf aan te passen. Een voorbeeld is [Required], waarmee je kan aangeven dat een eigenschap verplicht is:


  public class Klant
    {
        [Required]
        [Display(Name = "E-mail")]
        public string Email { get; set; }
    }

Rollen via data-annotaties

 

 

Via deze data-annotaties kan je er ook voor zorgen dat gebruikers ingelogd moeten zijn met een bepaalde rol voordat ze een Action mogen uitvoeren. Er zijn een aantal belangrijke data-annotaties:

 

 

  1. [Authorize]: hiermee wordt aangegeven dat een Controller of Action alleen toegankelijk is voor ingelogde gebruikers.
  2. [AllowAnonymous]: Niet-ingelogde bezoekers mogen de Action uitvoeren, zelfs als de Controller een ingelogde bezoeker verwacht.

Voorbeeld rollen via data-annotaties

  


[Authorize]
    public class WinkelController : Controller
    {

       [Authorize(Roles = "Beheerder, Administrator")]
        public ActionResult OverzichtBestellingen()
        {
            return View();
        }

        [AllowAnonymous]
        [HttpPost]
        public ActionResult Login()
        {
            /* Logincode */
            return View();
        }

 

In bovenstaande voorbeeld staat ook een methode om via Roles= aan te geven welke rollen (één van de) verplicht zijn.

IP-filter via data-annotatie

Sommige functionaliteit in een Controller wil je alleen beschikbaar hebben voor gebruikers vanaf een bepaald IP-adres. Door data-annotaties uit te breiden met een nieuwe annotatie, kan je dit bewerkstelligen. Deze uitbreiding is al gemaakt: Restrict Access to an MVC Action or Controller by IP Address using a Custom Action Filter.

Voeg bovenstaande ActionFilterAttribute aan je project toe en plaats in je app.config of web.config de toegestane IP-adressen: <add value="::1, 127.0.0.1, 10.0.*.*, 79.88.44.33" key="AuthorizeIPAddresses" />.

Nu kan je via de data-annotatie [AuthorizeIPAddress] elke Controller en Action naar wens alleen toegankelijk maken vanaf een of een aantal bepaalde IP-adressen.


Andere blogartikelen

  • Het gebruik van await in C#

    Geschreven door: op zaterdag 28 maart 2020

    Binnen applicaties kunnen soms functies voorkomen die lang nodig hebben om te voltooien. Denk bijvoorbeeld aan een call naar een API van een derde partij die veel data teruggeeft die verwerkt moet wor ...

    Bekijk het artikel »
  • Het gebruik van de SemaphoreSlim class in C#

    Geschreven door: op zaterdag 28 maart 2020

    Webapplicaties kunnen meerdere calls vanuit meerdere plekken verwerken zonder dat deze requests op elkaar moeten wachten. Maar soms heb je te maken met een usecase waar je helemaal niet wilt dat funct ...

    Bekijk het artikel »
  • SQL en het gebruik van JOIN

    Geschreven door: op zaterdag 28 maart 2020

    Binnen SQL heb je verschillende manieren om tabellen met elkaar te koppelen om zo data uit beide tabellen terug te krijgen in de resultaten. Maar wat houdt elk van deze joins in?Verschillende typenE ...

    Bekijk het artikel »
Bel 072 5345 888
Meer dan 40 bedrijven vertrouwen op ons
Onze Middelen en Technologieën
microsoft silver partner
Adobe partner
fd-gazellen-2018.jpg
Google analytics
partners-logo.jpg
Op de hoogte blijven?

Meld u aan voor de gratis nieuwsbrief om op de hoogte te blijven van onze activiteiten