7 Kasım 2012, ÇARŞAMBA
ASP.NET MVC 4 Özel Yetki İzni Kodları (roller olmadan)ile Öznitelik
Görüş kullanıcılar MVC 4 uygulamasında ayrıcalık düzeyi (CRUD işlemi seviyeleri kullanıcılar atanan roller, tek ayrıcalık seviyesi vardır hayır) tabanlı erişim kontrol etmem gerekiyor.
Benim özel olacak AuthorizeUser aşağıda örnek olarak kullanacağım abd aşağıdaki gibi bağlıyoruz.
[AuthorizeUser(AccessLevels="Read Invoice, Update Invoice")]
public ActionResult UpdateInvoice(int invoiceId)
{
// some code...
return View();
}
[AuthorizeUser(AccessLevels="Create Invoice")]
public ActionResult CreateNewInvoice()
{
// some code...
return View();
}
[AuthorizeUser(AccessLevels="Delete Invoice")]
public ActionResult DeleteInvoice(int invoiceId)
{
// some code...
return View();
}
Bunu yapmak mümkün mü? Nasıl? Şimdiden teşekkürler...
Chatura
CEVAP
8 Kasım 2012, PERŞEMBE
Aşağıdaki gibi özel bir öznitelik ile bunu yapabilirim.
[AuthorizeUser(AccessLevel = "Create")]
public ActionResult CreateNewInvoice()
{
//...
return View();
}
Özel aşağıdaki gibi Sınıf Özniteliği.
public class AuthorizeUserAttribute : AuthorizeAttribute
{
// Custom property
public string AccessLevel { get; set; }
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
var isAuthorized = base.AuthorizeCore(httpContext);
if (!isAuthorized)
{
return false;
}
string privilegeLevels = string.Join("", GetUserRights(httpContext.User.Identity.Name.ToString())); // Call another method to get rights of the user from DB
if (privilegeLevels.Contains(this.AccessLevel))
{
return true;
}
else
{
return false;
}
}
}
HandleUnauthorizedRequest
Bu yöntem geçersiz kılma, özel AuthorisationAttribute
yetkisiz bir kullanıcı yönlendirebilir:
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary(
new
{
controller = "Error",
action = "Unauthorised"
})
);
}
Bunu Paylaş:
/ Nihayet (Catch olmadan) çalışacak öz...
Ne zaman bir özel öznitelik'in ku...
Özel SSH-key veya Ruby olmadan kabuk k...
Nasıl özel bir hücre olmadan bir UİTab...
Nasıl Özel Sınıf tüm sınıflar özniteli...