SORU
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ş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ☆ SUB4SUB CENTER! ☆ spam here

    ☆ SUB4SUB

    22 ŞUBAT 2010
  • RinconDynamic

    RinconDynami

    1 EKİM 2011
  • UKF Dubstep

    UKF Dubstep

    29 NİSAN 2009