यूआरएल को छेड़छाड़ किए बिना एक उपयोगकर्ता के लिए बहु-टैब सत्र राज्यों को सुविधाजनक बनाने के लिए, निम्न कार्य करें।
आपके प्रपत्र लोड समारोह में, शामिल हैं:
Session(ViewState("_PageID").ToString() & "CheckBoxes") = D
नोट्स:
- रूप
If Not IsPostback Then
'Generate a new PageiD'
ViewState("_PageID") = (New Random()).Next().ToString()
End If
आप अपने सत्र स्थिति के लिए कुछ सहेजते हैं, PageID शामिल सत्र आईडी सामान्य रूप से, आप भरोसा नहीं कर सकते कि दुर्भावनापूर्ण दर्शक नहीं बदलेंगे सत्र आईडी/पेजआईडी। यह केवल पर्यावरण के लिए एक वैध समाधान है जहां सभी उपयोगकर्ताओं पर भरोसा किया जा सकता है। सौभाग्य से, व्यूस्टेट एक छुपा इनपुट फ़ील्ड का उपयोग करने से अधिक सुरक्षा प्रदान करता है।
- पोस्टबैक पर व्यूस्टेट को पुनर्स्थापित किए जाने तक आपको पृष्ठ आईडी तक पहुंच नहीं होगी। इसलिए, आपको पेज_इनिट() हैंडलर में पेजआईडी तक पहुंच नहीं होगी।
स्रोत
2010-05-16 16:20:14
एएसपी.नेट वेब फॉर्मों का उपयोग कर देवों के लिए, आप मूल HTML छिपे हुए फ़ील्ड के बजाय व्यूस्टेट का उपयोग करके दुर्भावनापूर्ण उपयोगकर्ताओं को पृष्ठ आईडी के साथ छेड़छाड़ करने की एक डिग्री प्राप्त कर सकते हैं। डिफ़ॉल्ट रूप से व्यूस्टेट सर्वर मशीन कुंजी के साथ धोया जाता है और एएसपी.NET एक अपवाद फेंकता है यदि पोस्ट किया गया डेटा वैध हैश नहीं है। यदि सत्र आईडी इस के साथ छेड़छाड़ की जाती है तो आम तौर पर एक नया सत्र बनने का कारण बनता है जब अगला डेटा इसके बारे में लिखा जाता है क्योंकि मौजूदा सत्र अमान्य होगा - मौजूदा डेटा को याद करने के प्रयासों के परिणामस्वरूप शून्य संदर्भ अपवाद होंगे। इन या IsNewSession संपत्ति की जांच कर सकते हैं। – pwdst
@pwdst उत्कृष्ट बिंदु, मैं मैच के समाधान को समायोजित कर दूंगा! धन्यवाद –
यह एक प्रश्न का एक उत्कृष्ट समाधान है कि मुझे काम पर डेटा अखंडता के लिए इस सप्ताह से निपटना पड़ा। उपयोगकर्ता दूसरे टैब खोल रहे थे और फिर दूसरे रिकॉर्ड से जुड़े पाठ्यक्रम सत्र के साथ, पहले टैब में आयोजित रिकॉर्ड को अपडेट करने के लिए लौट रहे थे। मैंने गलत रिकॉर्ड पर गलत अपडेट को रोकने के लिए इस समाधान का एक संस्करण इस्तेमाल किया। – pwdst