पर काम नहीं कर रहा है मैंने नियंत्रक के लिए ओवरराइड किया है जो जांचता है कि कुछ सत्र डेटा मौजूद है या नहीं। भंडार के लिए यह डेटा ठीक से काम करने के लिए आवश्यक है, इसलिए यदि यह मौजूद नहीं है तो जांच के बाद उपयोगकर्ता को लॉग ऑफ होना चाहिए।नियंत्रक से रीडायरेक्ट
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
base.Initialize(requestContext);
if (Session["CompanyID"] != null)
{
repo.CompanyID = (long)Session["CompanyID"];
}
else
{
RedirectToAction("LogOff", "Account");
}
}
मेरे कोड इस तरह दिखता है, लेकिन फिर भी जब RedirectToAction शुरू हो जाती है नियंत्रक अभी भी डिफ़ॉल्ट कार्रवाई को खोलता है और उपयोगकर्ता लॉग ऑफ नहीं है। क्या आप इस समस्या को संभालने के तरीके पर सिफारिश कर सकते हैं?
मैं इस सत्र डेटा का इस तरह से उपयोग कर रहा हूं क्योंकि यह पहली जगह है जिसे मैं प्राप्त कर सकता हूं, मुझे पता है और यहां मैं यह जांच सकता हूं कि यह विशेष डेटा मौजूद है या नहीं। यह तब लिखा जाता है जब उपयोगकर्ता लॉग इन करता है।
यह डेटा डेटाबेस में उपयोगकर्ता का एक हिस्सा है। मैंने एक कस्टम सदस्यता और भूमिका प्रदाता बनाया है। क्या इस डेटा को सदस्यता यूज़र प्रकार के "उपयोगकर्ता" में जोड़ने का कोई तरीका है, इसलिए इसे उपयोगकर्ता नाम जैसे कन्स्ट्रक्टर में एक्सेस किया जा सकता है?
मैं सिद्धांत को समझता हूं, लेकिन यह थोड़ा अवांछित लगता है। मैं इसे वैश्विक फ़िल्टर नहीं कर सकता क्योंकि आवेदन के सार्वजनिक क्षेत्र हैं, और फिर मुझे इसे उस क्षेत्र के अंदर की हर क्रिया पर लागू करना होगा जिसके लिए इसकी आवश्यकता है? क्या प्रारंभ करने के बाद नियंत्रक के लोडिंग को तोड़ने और इसे किसी अन्य नियंत्रक की दूसरी कार्रवाई में भेजने का कोई अन्य तरीका है? – Zaak
आप एक नियंत्रक को विशेषता लागू कर सकते हैं, और यह उस नियंत्रक, या नियंत्रक बेस क्लास के भीतर प्रत्येक क्रिया के लिए लागू किया जाएगा और फिर प्रत्येक व्युत्पन्न कक्षाओं के कार्यों के लिए कार्रवाई भी लागू की जाएगी! –
हम्म, इस तरह से अभी भी इस तथ्य को संबोधित नहीं करता है कि मुझे इसे एक बार सेट करना है। ऐसा लगता है कि फ़िल्टर एट्रिब्यूट के माध्यम से चीजें करने से इस तरह से जब भी नियंत्रक को तुरंत चालू किया जाता है, तो इसे हर बार एक क्रिया निष्पादित करता है? – Zaak