से वर्णनात्मक 401 संदेश लौट रहा है मेरे पास ओविन का उपयोग कर एएसपीनेट 4.5 वेब एपीआई चल रहा है। जब भी एक अनाधिकृत अनुरोध किए जाने पर यह निम्नलिखित प्रतिक्रिया के साथ एक 401 रिटर्न की उम्मीद के रूप में:ओविन WebApi2
{"Message":"Authorization has been denied for this request."}
मैं यह प्रतिक्रिया (सीमा समाप्त टोकन, अमान्य भूमिका, आदि ...) के लिए अतिरिक्त विस्तार जोड़ना चाहते हैं और एक कस्टम कार्यान्वित [AuthorizeAttribute]
इस SO post पर आधारित है।
public class MyAuthorizeAttribute : AuthorizeAttribute
{
protected override void HandleUnauthorizedRequest(HttpActionContext actionContext)
{
var response = actionContext.Request.CreateResponse<MyError>
(new MyError() { Description = "This is why you're unauthorized" });
response.StatusCode = HttpStatusCode.Unauthorized;
actionContext.Response = response;
}
}
और फिर मेरी नियंत्रकों पर यह प्रयोग किया जाता इस तरह:
[MyAuthorizeAttribute(Roles = "Foo")]
public class MyController : ApiController
{
...
}
जो निम्नलिखित प्रतिक्रिया की उम्मीद के रूप में के साथ एक 401 देता है:
{"Description": "This is why you're unauthorized"}
हालांकि, मैं नहीं दिख रहा है कि कैसे करने के लिए HttpActionContext
से MyAuthorizeAttribute.HandleUnauthorizedRequest
पर अनुरोध अनधिकृत होने का कारण निर्धारित करें। उदाहरण के लिए, जब मैं स्थानीय रूप से डिबगिंग कर रहा हूं और एक समाप्त टोकन के साथ अनुरोध करता हूं तो यह SecurityTokenExpiredException
IDX10223: Lifetime validation failed. The token is expired. ValidTo: '...' Current time: '...'.
समझाता है या अमान्य श्रोताओं के साथ SecurityTokenInvalidAudienceException
Message=IDX10214: Audience validation failed. Audiences: '...'. Did not match: validationParameters.ValidAudience: 'null' or validationParameters.ValidAudiences: '...'.
समझाता है मैंने अपने Startup.cs
में कई ब्रेकपॉइंट सेट किए हैं, फिर भी पकड़ने में असमर्थ रहे हैं इन अपवादों में से एक को फेंकने से पहले।
ओविन मिडलवेयर का उपयोग करके अनुरोध अनधिकृत होने का विशिष्ट कारण कैसे निर्धारित कर सकता हूं?
हे @ ग्रेग ओवेन का उपयोग करके इसे संभालने का कोई मौका अभी तक? –