एंटिटी फ्रेमवर्क 6.0.0-आरसी 1 (विज़ुअल स्टूडियो 2013 आरसी के साथ आने वाले) के साथ एएसपीनेट पहचान संस्करण 1.0.0-आरसी 1 का उपयोग कर वर्तमान उपयोगकर्ता के उपयोगकर्ता नाम बदलने के बाद प्रमाणीकरण कुकीज़ कैसे बदलें।एएसपीनेट पहचान
उपयोगकर्ताओं को UserName
बदलने का अवसर देने का प्रयास कर रहा है। AuthenticationIdentityManager
के तहत उस के लिए कोई फ़ंक्शन नहीं लगता है, इसलिए मैं ईएफ का उपयोग कर डेटा बदलता हूं (वर्तमान उपयोगकर्ता के लिए उपयोगकर्ता ऑब्जेक्ट प्राप्त करें, उपयोगकर्ता नाम बदलें और परिवर्तनों को सहेजें)।
समस्या यह है कि प्रमाणीकरण कुकीज़ अपरिवर्तित बनी हुई है, और अगला अनुरोध विफल रहता है क्योंकि ऐसा कोई उपयोगकर्ता नहीं है।
अतीत में फॉर्म प्रमाणीकरण के साथ मैंने इसे हल करने के लिए निम्न कोड का उपयोग किया।
var formsAuthCookie = Request.Cookies[FormsAuthentication.FormsCookieName];
var isPersistent = FormsAuthentication.Decrypt(formsAuthCookie.Value).IsPersistent;
FormsAuthentication.SetAuthCookie(newUserName, isPersistent);
कुकीज़ को अपडेट करने के लिए मुझे एएसपीनेट पहचान के साथ क्या करना चाहिए?
अद्यतन
निम्नलिखित कोड प्रमाणीकरण कुकी अद्यतन करने के लिए लगता है।
var identity = new ClaimsIdentity(User.Identity);
identity.RemoveClaim(identity.FindFirst(identity.NameClaimType));
identity.AddClaim(new Claim(identity.NameClaimType, newUserName));
AuthenticationManager.AuthenticationResponseGrant = new AuthenticationResponseGrant
(new ClaimsPrincipal(identity), new AuthenticationProperties {IsPersistent = false});
शेष समस्या है: कैसे वर्तमान प्रमाणीकरण कुकी से IsPersistent
मान प्राप्त करने के?
यह कोड आरटीएम (अभी तक व्यापक रूप से उपलब्ध नहीं है) के लिए काम कर सकता है। आरसी 1 में कोई डिफ़ॉल्ट प्रमाणीकरण प्रकार और उपयोगकर्ता प्रबंधक नहीं हैं। क्रिएटिडेंटिटीएसिंक()। – aleyush
दूसरा प्रश्न: मैं वर्तमान IsPersistent मान कैसे प्राप्त कर सकता हूं (मेरा लक्ष्य केवल उपयोगकर्ता नाम बदलने के लिए है, और कुछ नहीं)? – aleyush
वीएस2013 की रिहाई से पहले, रात के निर्माण के साथ परीक्षण रखना अच्छा होता है। डेवलपर्स से यहां कुछ टिप्पणियों में कहा गया है कि आरटीएम में कई आरसी 1 कक्षाएं उपलब्ध नहीं हैं जो नवंबर – jd4u