6

Kullanıcının, erişimi olmayan bir Varlığa erişmesini önlemek için denetleyici eylemi güvenliğini sağlamaya çalışıyorum. Bunu aşağıdaki kodla yapabilirim.Parametre değeri kullanan denetleyici için Özel AuthorizeAttribute nasıl kullanılır?

public ActionResult Entity(string entityCode) 
{ 
    if (CurrentUser.VerifyEntityPermission(entityCode)) 
    { 
     //populate viewModel... 
     return View(viewModel); 
    } 
    return RedirectToAction("NoAccessToEntity", "Error"); 
} 

Denetleyici eyleminin kendisine bir öznitelik ekleyebilmek istiyorum. Varlığa erişimi doğrulamak için, denetleyiciye hangi değerin aktarıldığını ve kullanıcının hangi varlıklara eriştiğini görmem gerekir. Mümkün mü?

[EntityAuthRequired] 
public ActionResult Entity(string entityCode) 
{ 
     //populate viewModel... 
     return View(viewModel); 
} 
+0

bunu nasıl yapardınız – Dragon

cevap

3

Bu gibi bir şey size yardımcı olabilir. Her eylemde, entityCode parametresini sabit kod yerine belirtmenize izin vermek için özniteliğinize bazı ek özellikler eklemek isteyebilirsiniz. entityCode senin RouteData değilse

public class EntityAuthRequired : FilterAttribute, IAuthorizationFilter 
{ 
    public override void OnAuthorization(AuthorizationContext filterContext) 
    { 
     //Make sure that this is not NULL before assigning value as string... 
     var entityCode = filterContext.RouteData.Values["entityCode"] as string; 
     // do your logic...   
     if (!allowed) 
      filterContext.Result = new HttpUnauthorizedResult();    
    } 
} 

Ayrıca, POST verilere bakmak için filterContext.RequestContext.HttpContext.Request kullanabilirsiniz.

+0

Authorizeattribute.and in AuthorizeRequest yönteminde denetleyici sonrası json değerleri nasıl edinilir – Dragon