ASP.NET MVC'de bir denetleyici yöntemini şu şekilde işaretleyebilirsiniz AuthorizeAttribute:
[Authorize(Roles = "CanDeleteTags")]
public void Delete(string tagName)
{
// ...
}
Bu, şu anda oturum açmış olan kullanıcı "CanDeleteTags" rolünde değilse, denetleyici yönteminin hiçbir zaman çağrılmayacağı anlamına gelir.
Ne yazık ki, başarısızlıklarından dolayı AuthorizeAttributegetiri HttpUnauthorizedResulthep HTTP durum kodu 401. döndürür Bu oturum açma sayfasına bir yeniden yönlendirme neden olur.
Kullanıcı oturum açmadıysa, bu çok mantıklıdır. Ancak, kullanıcı zaten giriş yapmışsa ancak gerekli rolde değilse, giriş sayfasına geri göndermek kafa karıştırıcıdır.
AuthorizeAttributeKimlik doğrulama ve yetkilendirmeyi birleştiriyor gibi görünüyor .
Bu ASP.NET MVC bir gözetim biraz gibi görünüyor, ya da bir şey eksik mi?
Ben DemandRoleAttributeikisini ayıran bir yemek zorunda kaldı . Kullanıcı kimliği doğrulanmadığında, HTTP 401'i döndürür ve giriş sayfasına gönderir. Kullanıcı oturum açtığında, ancak gerekli rolde olmadığında, bunun NotAuthorizedResultyerine bir dosya oluşturulur . Şu anda bu bir hata sayfasına yönlendiriyor.
Elbette bunu yapmak zorunda değildim mi?