ASP.NET पहचान 2.0 में वर्तमान उपयोगकर्ता आईडी प्राप्त करें


81

मैंने अभी पहचान फ्रेमवर्क के नए 2.0 संस्करण का उपयोग करने के लिए स्विच किया है। 1.0 में मैं उपयोग करके एक उपयोगकर्ता वस्तु प्राप्त कर सकता था manager.FindByIdAsync(User.Identity.GetUserId())GetUserId()विधि प्रतीत नहीं होता है 2.0 में मौजूद है।

अब सभी मैं यह पता लगा सकता हूं manager.FindByEmailAsync(User.Identity.Name)कि उपयोगकर्ता तालिका में उपयोगकर्ता नाम फ़ील्ड का कौन सा संदर्भ है। मेरे आवेदन में यह ईमेल क्षेत्र के समान है।

जब सड़क को किसी को अपने ईमेल को अपडेट करने की आवश्यकता होती है, तो मैं इस मुद्दे को देख सकता हूं। क्या पहचान 2.0 फ्रेमवर्क में अपरिवर्तित मूल्य (जैसे आईडी फ़ील्ड) के आधार पर उपयोगकर्ता ऑब्जेक्ट में वर्तमान लॉग इन करने का एक तरीका है ?


आपको UserId कैसे मिला, क्या आप मुझे बता सकते हैं, मैं एक ही मुद्दे पर चल रहा हूं।
अम्मार खान

जवाबों:


108

GetUserId()पर एक विस्तार विधि है IIdentityऔर यह अंदर है Microsoft.AspNet.Identity.IdentityExtensions। सुनिश्चित करें कि आपने नाम स्थान जोड़ा है using Microsoft.AspNet.Identity;



2
ऐसा लगता है कि आइडेंटिटी 2 के साथ काम नहीं कर रहा है। किसी भी सुझाव कृपया
अम्मार खान

2
अभी भी होना चाहिए। मैं अभी अपनी पहचान 2 परियोजनाओं में GetUserId () का उपयोग कर रहा हूं।
एंथनी चू

4
पहचान 3.0 में यह System.Security.Principal नाम स्थान पर ले जाया गया है।
सैम

क्या वर्तमान उपयोगकर्ता भूमिका प्राप्त करने का कोई तरीका है? मुझे भूमिका कब निर्धारित करनी चाहिए? नोट: मैं कस्टम स्टोरेज प्रोवाइडर का उपयोग कर रहा हूं ..
जीव जेएसबी

61

पहले आयात पर Asp.net Identity 2.0 में CurrentUserId प्राप्त करने के लिए Microsoft.AspNet.Identity:

सी#:

using Microsoft.AspNet.Identity;

VB.NET:

Imports Microsoft.AspNet.Identity


और फिर User.Identity.GetUserId()आप चाहते हैं कि हर जगह फोन :

strCurrentUserId = User.Identity.GetUserId()

यह विधि डेटाबेस में उपयोगकर्ता के लिए परिभाषित डेटाटाइप के रूप में वर्तमान उपयोगकर्ता आईडी देता है (डिफ़ॉल्ट है String)।


1
क्या आप मुझे बता सकते हैं कि मुझे Microsoft.AspNet.Identity नाम स्थान के लिए संबंधित DLL कहां मिल सकता है?
फ्रांज़ी

15

यदि आप मेरे जैसे हैं और यूजर एंटिटी का आईडी फील्ड एक इंट या स्ट्रिंग के अलावा कुछ और है,

using Microsoft.AspNet.Identity;

int userId = User.Identity.GetUserId<int>();

चाल चलेगा


4

मेरी भी यही समस्या थी। मैं वर्तमान में Asp.net Core 2.2 का उपयोग कर रहा हूं। मैंने निम्नलिखित कोड के साथ इस समस्या को हल किया।

using Microsoft.AspNetCore.Identity;
var user = await _userManager.FindByEmailAsync(User.Identity.Name);

मुझे उम्मीद है कि यह किसी के लिए उपयोगी होगा।


1
आपने मेरी जान बचाई है
सैम ट्यूब
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.