2017-05-30 37 views
1

Je souhaite créer un MVC API Web. Cette API autorisera TOKEN JWT et je souhaite créer mon propre attribut Authorize comme CanRead, CanModify, CanWrite. Trois attributs héritent de la classe Attribute (no AuthorizeAttribute), est-ce correct?Comment créer mon propre attribut Authorize pour l'API MVC

Mon application a compliquer le rôle et la permission, donc je veux personnaliser tout sur l'autorisation et l'authentification. Je veux gérer la dynamique de permission

Alors, comment puis-je le faire?

Vais-je accéder à la base de données à partir des attributs (CanRead ou CanModify) pour vérifier l'autorisation

Répondre

0

Créer une coutume AuthorizeAttribute place. un exemple ci-dessous.

public class KeyAuthorizeAttribute : AuthorizeAttribute 
{ 
    protected override bool AuthorizeCore(HttpContextBase httpContext) 
    { 
     string key = httpContext.Request["X-Key"]; 
     return ApiValidatorService.IsValid(key); 
    } 
} 

public static class ApiValidatorService 
{ 
    public static bool IsValid(string key) 
    { 
     int keyvalue; 

     if (int.TryParse(key, out keyvalue)) 
     { 
      return keyvalue % 2137 == 7; 
     } 
     return false; 
    } 
} 

Pris from Jon Galloway's blog. Je ne sais pas précisément comment vous autorisez, mais si vous créez une classe avec:

public bool CanRead { get; set; } 
public bool CanWrite { get; set; } 
public bool CanModify { get; set; } 

Et puis dans la méthode AuthorizeCore, déterminons en fonction du paramètre si l'utilisateur a la permission droit.