मैं एएसपी.नेट एमवीसी कैशिंग और प्राधिकरण पर उलझन में हूं और कुछ स्पष्टीकरण की सख्त जरूरत है।प्राधिकरण और एएसपी.नेट एमवीसी कैशिंग
मेरी स्वयं निर्मित प्राधिकरण विशेषता AuthorizeAttribute
से विरासत में प्राप्त होती है। इसकी ओवरराइड AuthorizeCore
विधि हर बार चलती है, भले ही मैं नियंत्रक कार्रवाई पर [OutputCache]
विशेषता सेट करता हूं। मैं उस हिस्से को समझता हूँ।
अब मेरे लिए मन Bender: AuthorizeCore
हर बार असफल हो जायेगी अब जब मैं वास्तव में उत्पादन कैशिंग करते हैं और पेज कैश से परोसा जाता है। इसका कारण यह है कि जब अनुरोध कैश किया जाता है, httpContext.Session
AuthorizeCore
के साथ आपूर्ति null
है? यहाँ कुछ सरल कोड है:
protected override bool AuthorizeCore(HttpContextBase httpContext) {
return (Session["userId"] != null)
}
तो अगर httpContext.Session
null
है, यह स्पष्ट रूप से हर बार विफल रहता है। हालांकि मुझे सत्र तक पहुंचने की ज़रूरत है, अगर अनुरोध अधिकृत है तो मैं और कैसे जांच सकता हूं? यह कोई समझ नहीं आता है - अगर ऐसा होता है तो यह कभी एएसपी.नेट एमवीसी में प्रमाणीकरण के साथ कैश किए गए पृष्ठों का उपयोग करने में सक्षम हो जाएगा। मदद?
तो आप कह रहे हैं कि क्या मैं नियमित एएसपीनेट सदस्यता प्रदाता के आधार पर कस्टम सदस्यता प्रदाता का उपयोग करना चाहता हूं, मैं कैशिंग के साथ उपयोगकर्ता प्रमाणीकरण की जांच कर सकता हूं? वह काम क्यों करता है - सदस्यता प्रदाता सत्र की भी आवश्यकता है आंतरिक रूप से नहीं? – Alex
सत्र, पूर्ण रोक में सुरक्षा-संवेदनशील जानकारी रखना कभी सुरक्षित नहीं है। –
और नहीं, नियमित सदस्यता प्रदाता के पास सत्र के साथ कुछ भी करने के करीब नहीं है। मेरे उत्तर में पिछले दो लिंक पढ़ें। –