Tüm özel AuthorizeAttribute'm neden MVC WebApi'mde çalışmadığımı bulmaya çalışırken İnternet üzerinden çalışıyorum. SO üzerinde bu tür şeyleri soruyor insanlar gördüm ama hiçbir şey beni henüz benim sorunu çözmeye yardımcı olmuştur: System.Web.Http
aksineÖzel AuthorizeAttribute MVC Framework tarafından çağrılmadı
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false,
Inherited = false)]
public sealed class CustomAuthorization : AuthorizeAttribute
{
//...
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
// custom auth logic, returns true if authorized, false otherwise
}
}
ben System.Web.Mvc
uzanan ediyorum. Ancak, benim AuthorizeCore(HttpContextBase httpContext)
asla denir.
[CustomAuthorization("Some Permission")]
[System.Web.Http.HttpGet]
public CustomResponse SomeAction()
{
//...
}
Ne elde umuyorum benim yetkiye sahip olmaktır:
Belirli bir eylem için gerekli benim özel izinler isimleri bir params string[]
alır benim CustomAuthorization
sınıfında yapıcı, örneğin var bir istek [CustomAuthorization]
özniteliği ile dekore bir eyleme yapıldığında kod ateş etti. Ayrıca yetkilendirme başarısız olursa daha açıklayıcı yetkilendirme başarısız mesajı dönmek isterler. Sadece:
{"Message":"Authorization has been denied for this request."}
bu ağır basan HandleUnauthorizedRequest
gerektirir inanıyoruz ama yapabileceğim bu nasıl bir JSON yanıtı serialize edeceğini kendi nesne sağlamak için?
Özetlersek, [CustomAuthorization]
özniteliğimle eylemleri dekore etsem bile yetki kodum hiçbir zaman çerçeve tarafından çağrılmaz. Sadece eylem içindeki kodu yürütmeye doğru gidiyor.
İkinci olarak, özel bir JSON nesnesini serileştirmek için yetkisiz yanıtları nasıl uygularım?
Yardımlarınız için şimdiden teşekkür ederiz, bu çok takdir!
Özel bir yetkilendirme özniteliğini nasıl uygulandığım hakkındaki yorumlarım temel alıyor ... Başlamak için, Yetkilendirmeyi, Yetkilendirmeyi değil, Yetkilendirmeyi geçersiz kılmak istediğinizi düşünüyorum. Ayrıca, ben size sınıf mühürlü olması gerekir emin değilim. –