दिलचस्प पोस्ट
क्या यह कुंजी-आधारित पहुंच-संरक्षण पैटर्न एक ज्ञात मुहावर है? रनटाइम पर सामान्य प्रकार का वर्ग प्राप्त करें सी ++ वेक्टर, क्या होता है जब भी इसे ढेर पर विस्तार / पुन: निर्दिष्ट करता है? IPhone के लिए स्वचालित परीक्षण Node.js में एक फ़ाइल पढ़ें हैशमैप, लिंक्डएचशैप और ट्रीमाप के बीच का अंतर क्या आप जावास्क्रिप्ट के साथ जीआईएफ एनिमेशन नियंत्रित कर सकते हैं? HTTP में सामग्री-विच्छेद शीर्षलेख के फ़ाइल नाम पैरामीटर को कैसे एन्कोड करना है? सीबेइन / सेंड के पीछे क्या कारण है? जावा विकल्प-एक्सएमएक्स किसके लिए खड़ा है? ईमेल से समयक्षेत्र के साथ तारीख को पार्स करना? स्टार्टअप पर लॉन्च करने के लिए मैं एक प्रोग्राम कैसे सेट करूं? Android को संकलक अनुपालन स्तर 5.0 या 6.0 की आवश्यकता है इसके बजाय '1.7' मिला कृपया एंड्रॉइड उपकरण> फिक्स प्रोजेक्ट गुणों का उपयोग करें Gradle विभिन्न प्रोसेसर आर्किटेक्चर के लिए एंड्रॉइड बिल्ड एक JTable सेल क्लिक-सक्षम में एक JButton कैसे बनाने के लिए?

एस्प.net एमवीसी में विशेषता और jquery AJAX अधिकृत करें

मैं एक फार्म जमा करने के लिए jquery अजाक्स फ़ंक्शन का इस्तेमाल किया है। उपयोगकर्ताओं को दूसरे में लॉग इन करना होगा, उन्हें एक लॉगिन पेज पर रीडायरेक्ट करना होगा। मैंने इसके लिए प्राधिकृत () विशेषता का इस्तेमाल किया है।

[Authorize] public ActionResult Creat() { .... } 

अगर उपयोगकर्ता jquery के एजेक्स फ़ंक्शंस के लिए एक्शन रिटर्न लॉन्ग पेज को लॉगिन नहीं करता है और यह उसी पेज पर प्रदर्शित होता है लेकिन मैं यूज़र को लॉगइन पेज पर रीडायरेक्ट करना चाहता हूं। क्या कोई हल है?

Solutions Collecting From Web of "एस्प.net एमवीसी में विशेषता और jquery AJAX अधिकृत करें"

कार्य करना उदाहरण: https://github.com/ronnieoverby/mvc-ajax-auth

महत्वपूर्ण भागों:

AjaxAuthorizeAttribute:

 using System.Web.Mvc; namespace MvcApplication1 { public class AjaxAuthorizeAttribute : AuthorizeAttribute { protected override void HandleUnauthorizedRequest(AuthorizationContext context) { if (context.HttpContext.Request.IsAjaxRequest()) { var urlHelper = new UrlHelper(context.RequestContext); context.HttpContext.Response.StatusCode = 403; context.Result = new JsonResult { Data = new { Error = "NotAuthorized", LogOnUrl = urlHelper.Action("LogOn", "Account") }, JsonRequestBehavior = JsonRequestBehavior.AllowGet }; } else { base.HandleUnauthorizedRequest(context); } } } } 

जावास्क्रिप्ट:

  $(function () { $(document).ajaxError(function (e, xhr) { if (xhr.status == 403) { var response = $.parseJSON(xhr.responseText); window.location = response.LogOnUrl; } }); }); 

एक नियंत्रक में विशेषता का प्रयोग करें:

  [AjaxAuthorize] public ActionResult Secret() { return PartialView(); } 

कुछ अजाक्स करें:

 @Ajax.ActionLink("Get Secret", "Secret", new AjaxOptions { UpdateTargetId = "secretArea", }) <div id="secretArea"></div> 

# रोनी के उत्तर के लिए बस एक आसान जोड़

यदि आप पुनर्निर्देशन पर पृष्ठ यूआरएल रखना चाहते हैं

  var pathname = window.location.pathname; if (xhr.status == 403) { var response = $.parseJSON(xhr.responseText); window.location = response.LogOnUrl + '?ReturnUrl=' + pathname; } 

अजाक्स का उपयोग किसी पृष्ठ की सामग्री को आंशिक रूप से अपडेट करने के लिए किया जाता है, इसलिए यह सबसे अच्छा होगा कि आप अपने जावास्क्रिप्ट / jquery कॉल बैक कोड में अपने क्लाइंट साइड पर इस रीडायरेक्ट को संभाल लेंगे। आपको इस पोस्ट से कुछ विचार भी मिल सकते हैं।

रोनी ओवरबी के उत्तर के लिए एक और विस्तार के रूप में

उसका समाधान वेबपिया के साथ काम नहीं करता है, लेकिन यह ठीक है क्योंकि आप इसके बजाय सामान्य ऑथराइज विशेषता का उपयोग कर सकते हैं और फिर एजेक्स त्रुटि समारोह में 401 की स्थिति को संभाल सकते हैं।

  $(document).ajaxError(function (e, xhr) { //ajax error event handler that looks for either a 401 (regular authorized) or 403 (AjaxAuthorized custom actionfilter). if (xhr.status == 403 ||xhr.status == 401) { //code here } });