मेरे पास एक ASP.NET MVC (कोर नहीं) वेब ऐप है जो उपयोगकर्ता को प्रमाणित करने के लिए किसी अन्य साइट का उपयोग करता है, जिसमें दूसरी साइट और पीछे नेविगेट करना शामिल है। मैं सत्र चर में जानकारी संग्रहीत करता हूं जिसे मैं उपयोगकर्ता के मूल साइट पर वापस आने के बाद पढ़ना चाहता हूं, लेकिन जब उपयोगकर्ता वापस आता है तो सत्र एक नया होता है, न कि वह जिसमें मैंने जानकारी संग्रहीत की थी।

ASP.NET एक नया सत्र शुरू करने का निर्णय क्यों/कैसे कर रहा है (या पुराने को याद नहीं)? क्या इसे जिस तरह से मैं चाहता हूं व्यवहार करने का कोई तरीका है?

0
Doctor Erratic 15 अप्रैल 2020, 01:21

1 उत्तर

सबसे बढ़िया उत्तर

खैर, मैंने इसका पता लगा लिया है। समस्या यह है कि प्रमाणीकरण साइट का पृष्ठ मूल साइट पर लौटने के लिए एक पोस्ट करता है। ASP.NET सत्र कुकी में SameSite=Lax है, इसलिए इस तरह की क्रॉस-साइट POST इसे नहीं भेजेगी। चूंकि ASP.NET कुकी को नहीं देखता है, यह एक नया सत्र और संबद्ध कुकी बनाता है, मूल कुकी को अधिलेखित कर देता है।

समाधान (या a समाधान, वैसे भी), कुकी को SameSite=None और Secure के रूप में चिह्नित करना है, जो मैंने अपने Web.config में निम्नलिखित जोड़कर किया:

<sessionState cookieSameSite="None" />
<httpCookies requireSSL="true" />

पहली पंक्ति सत्र कुकी को SameSite=None बनाती है, और दूसरी पंक्ति सभी कुकी को सुरक्षित बनाती है।

1
Doctor Erratic 15 अप्रैल 2020, 18:16