2010-02-01 15 views
6

मैं ऐसी साइट पर काम कर रहा हूं जो लॉग इनिंग और इस तरह की विभिन्न चीजों को करने के लिए jquery मोडल संवाद का उपयोग करता है।एएसपी.नेट एमवीसी प्राधिकरण एक मॉडल लॉन्च करने के लिए अधिकृत?

हालांकि; हमारे पास इनका उपयोग करने के साथ एक मामूली समस्या है .. जिसका हम अपने कई कार्यवाही तरीकों पर [अधिकृत] विशेषता का उपयोग कर रहे हैं और इसलिए क्या हो रहा है यदि उपयोगकर्ता लॉग इन नहीं होता है और जिस मार्ग की आवश्यकता होती है उसे हिट करता है इसके लिए अधिकृत होना लॉग इन पेज जैसा दिखता है, लेकिन ऐसा लगता है कि यह एक मोडल होने का अनुमान है।

किसी भी तरह की लंबी कहानी छोटी है, क्या कस्टम प्राधिकरण विशेषता बनाने का कोई तरीका है जो लॉगिन मोडल को वास्तविक दृश्य के बजाय मोडल ट्रिगर कर सकता है?

+0

ASP.NET MVC के किन संस्करणों का उपयोग कर रहे हैं:

[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, Inherited = true, AllowMultiple = true)] public class PopupAuthorizeAttribute : AuthorizeAttribute { private void CacheValidateHandler(HttpContext context, object data, ref HttpValidationStatus validationStatus) { validationStatus = this.OnCacheAuthorization(new HttpContextWrapper(context)); } public override void OnAuthorization(AuthorizationContext filterContext) { bool isAuthorized = false; if (filterContext == null) { throw new ArgumentNullException("filterContext"); } if (this.AuthorizeCore(filterContext.HttpContext)) { HttpCachePolicyBase cache = filterContext.HttpContext.Response.Cache; cache.SetProxyMaxAge(new TimeSpan(0L)); cache.AddValidationCallback(new HttpCacheValidateHandler(this.CacheValidateHandler), null); isAuthorized = true; } filterContext.Controller.ViewData["OpenAuthorizationPopup"] = !isAuthorized; } } 

मास्टर पृष्ठ या अन्य आम ध्यान में रखते हुए सशर्त प्रतिपादन जोड़ सकता हूँ? –

उत्तर

5

इस मामले में आप एक कस्टम एक्शन फ़िल्टर विशेषता का उपयोग कर सकते हैं जो उपयोगकर्ता को अधिकृत नहीं है तो पॉपअप खोलता है।
इस क्रिया में फ़िल्टर करें बस जांचें कि उपयोगकर्ता लॉग इन है और ViewData संग्रह में एक बूलियन मान जोड़ें।
नियंत्रक की कार्रवाई पर विशेष रूप से विशेषता।
फिर मास्टर पेज में पॉपअप खोलने वाले कोड की सशर्त प्रतिपादन जोड़ें।

विशेषता के लिए कोड:

<% if((bool)(ViewData["OpenAuthorizationPopup"] ?? true)) { %> 
...Your code to open the popup here... 
<% } %> 
+0

धन्यवाद यह पूरी तरह से काम करता है – dswatik

संबंधित मुद्दे