İsteklerin kimliğini doğrulamak için OAuth / belirteç kimlik doğrulamasını kullanan bir MVC webapi sitem var. İlgili tüm denetleyiciler doğru özniteliklere sahiptir ve kimlik doğrulama sorunsuz çalışıyor.
Sorun, tüm talebin bir öznitelik kapsamında yetkilendirilememesidir - bazı yetkilendirme kontrollerinin, denetleyici yöntemleri tarafından çağrılan kodda gerçekleştirilmesi gerekir - bu durumda 401 yetkisiz yanıtı döndürmenin doğru yolu nedir?
Denedim throw new HttpException(401, "Unauthorized access");
, ancak bunu yaptığımda yanıt durum kodu 500 ve ayrıca bir yığın izleme alıyorum. DelegatingHandler günlüğümüzde bile yanıtın 401 değil 500 olduğunu görebiliriz.
HttpResponseException
birUnauthorized()
. 'Beklenen' bir hata için istisnayı kullanmak biraz anti-modeldir, bu nedenle, aramanın bu hatayı yapmasını beklediğiniz durumlar varsa, geri dönmekUnauthorized()
muhtemelen doğru aramadır. KaydetHttpResponseException
gerçekten beklenmedik için.