एएसपी.नेट में फॉर्म्स प्रमाणीकरण मॉड्यूल किसी भी HTTP 401 को रोकता है, और लॉगिन पृष्ठ पर HTTP 302 पुनर्निर्देशन देता है। यह AJAX के लिए दर्द है, क्योंकि आप जेसन के लिए पूछते हैं और एचटीएमएल में लॉगिन पेज प्राप्त करते हैं, लेकिन स्टेटस कोड HTTP 200 है।फॉर्म को रोकें प्रमाणीकरण मॉड्यूल एएसपी.NET वेब एपीआई प्रतिक्रियाओं को रोकना
एएसपी.नेट वेब एपीआई में इस अवरोध से बचने का तरीका क्या है?
ASP.NET MVC4 में यह स्पष्ट रूप से कनेक्शन बंद कर दिया इस अवरोध को रोकने के लिए बहुत आसान है:
public class MyMvcAuthFilter:AuthorizeAttribute
{
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
if (filterContext.HttpContext.Request.IsAjaxRequest() && !filterContext.IsChildAction)
{
filterContext.Result = new HttpStatusCodeResult(401);
filterContext.HttpContext.Response.StatusCode = 401;
filterContext.HttpContext.Response.SuppressContent = true;
filterContext.HttpContext.Response.End();
}
else
base.HandleUnauthorizedRequest(filterContext);
}
}
लेकिन ASP.NET वेब एपीआई में मैं कनेक्शन स्पष्ट रूप से समाप्त नहीं हो सकता है, इसलिए जब भी मैं इस का उपयोग कोड FormsAuthenticationModule प्रतिक्रिया को बीच में रोक और प्रवेश पृष्ठ पर एक पुनर्निर्देशन भेजता है:
public class MyWebApiAuth: AuthorizeAttribute
{
protected override void HandleUnauthorizedRequest(System.Web.Http.Controllers.HttpActionContext actionContext)
{
if(actionContext.Request.Headers.Any(h=>h.Key.Equals("X-Requested-With",StringComparison.OrdinalIgnoreCase)))
{
var xhr = actionContext.Request.Headers.Single(h => h.Key.Equals("X-Requested-With", StringComparison.OrdinalIgnoreCase)).Value.First();
if (xhr.Equals("XMLHttpRequest", StringComparison.OrdinalIgnoreCase))
{
// this does not work either
//throw new HttpResponseException(HttpStatusCode.Unauthorized);
actionContext.Response = new System.Net.Http.HttpResponseMessage(System.Net.HttpStatusCode.Unauthorized);
return;
}
}
base.HandleUnauthorizedRequest(actionContext);
}
}
ASP.NET वेब एपीआई में इस व्यवहार से बचने का तरीका क्या है? मैं एक नज़र देख रहा हूं, और मुझे ऐसा करने का कोई तरीका नहीं मिला।
सम्मान।
पीएस: मुझे विश्वास नहीं है कि यह 2012 है और यह समस्या अभी भी चालू है।
किसी और के लिए देख रहे हैं, इसे आजमाएं: http://blog.craigtp.co.uk/post/OWIN-Hosted-Web-API-in-an-MVC-Project – Sentinel
@Sentinel द्वारा पोस्ट किया गया लिंक मेरी समस्या को हल करता है .... धन्यवाद! –