WebAPI

2017-02-28 23 views
5

içinde Yetkilendirme başarısız olursa özel ileti nasıl döndürür WebAPI projemde, [Authorize] özniteliğiyle dekore edilmiş sayıda apis var. Kullanıcının doğru belirtisi olmaması durumunda, kullanıcıya erişim reddedilmiş bir istisna geri döndürülür.WebAPI

Ama ihtiyacım olan şey, böyle bir durumda, özel yanıt mesajını şu şekilde döndürmem gerekiyor.

{ 
    "StatusCode" : 403, 
    "message": "You donot have sufficient permission" 
} 

Yetkilendirme başarısız olması durumunda bu özel iletiyi nasıl döndürebilirim.

unutmayın: Ben Owin kullanıyorum

  • - Jetonunu tabanlı kimlik doğrulama. Veritabanımdaki veya başka herhangi bir yerdeki erişim belirtecini saklamak için değil.
+0

cevapları burada bir okuma vardır: http://stackoverflow.com/questions/20149750/owin-unauthorised-webapi-call-returning-login-page-rather-than-401 –

+0

http://stackoverflow.com/questions/2578756/nasıl yapılır-make-authorize-attribute-return-custom-403-error-page-yerine-yönlendirme –

cevap

9

sadece AuthorizeAttribute miras ve bunun HandleUnauthorizedRequest() yöntemini geçersiz gereken özel yetki attributes.You olabilir en iyi şekilde biri hariç Bunu yapmanın farklı yolları vardır.

public class CustomAuthorization : AuthorizeAttribute 
{ 
    protected override void HandleUnauthorizedRequest(HttpActionContext actionContext) 
    { 
     actionContext.Response = new HttpResponseMessage 
     { 
      StatusCode = HttpStatusCode.Forbidden, 
      Content = new StringContent("You are unauthorized to access this resource") 
     }; 
    } 
} 

ve bunun gibi kullanmak

[CustomAuthorization]  
    public IHttpActionResult Get() 
    { 
     return Ok(); 
    } 

Aksi takdirde ayrıca istemci tarafında durum kodunu yakalamak ve seçeceğiniz özel mesaj görüntüleyebilir (CustomAuthorization yerinde Authorize arasında kullanılmalıdır).

+0

Teşekkürler dostum :) Bu benim gereksinime hitap etti. Bahsettiğiniz gibi yolların sayısı vardır, ben bir tane daha yol ekleyebilir –

+0

başka bir şekilde istemci tarafında istisna işlemek veya genel uygulama düzeyinde istisna ele alabilir eğer benim bilgi başına –

+1

Tamam . Kulağa harika geliyor. Bir kez daha teşekkürler :) –