Autorisatie via data-annotaties in .NET header image

Autorisatie via data-annotaties in .NET

maandag 31 oktober 2016 ·Leestijd: 2 minuten
contacteer auteur:

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

Integraties met API's van verschillende partijen
Geschreven door
op donderdag 30 juni 2022
Bij Sigma Solutions maken wij integraties met verschillende partijen, die ervoor zorgen dat jouw bedrijfsproces geautomatiseerd en gedigitaliseerd kan worden. We zijn constant op zoek naar passende oplossingen voor onze klanten.
Wat is B2B Online Advertising?
Geschreven door
op donderdag 30 juni 2022
B2B Online Advertising is een marketingstrategie die bedoeld is om een zakelijke boodschap over te brengen aan andere bedrijven door middel van advertenties.
Als traditioneel bedrijf succesvol blijven in een tijdperk van digitalisering
Geschreven door
op donderdag 30 juni 2022
Wil je als traditioneel bedrijf succesvol blijven in een tijdperk van 'digital natives'? Lees dan deze blogpost!
Open Nieuwsbrief Inschrijving Footer

E-book

Zo wordt uw website een lead generator 
In 3 stappen uw website van visitekaartje naar salesfunnel

Download het E-book â€º