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ı AuthorizeAttribute
getiri HttpUnauthorizedResult
hep 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.
AuthorizeAttribute
Kimlik 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 DemandRoleAttribute
ikisini 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 NotAuthorizedResult
yerine bir dosya oluşturulur . Şu anda bu bir hata sayfasına yönlendiriyor.
Elbette bunu yapmak zorunda değildim mi?