मैं अपनी वेबसाइट में लॉग इन करने के लिए उपयोगकर्ताओं के लिए MVC5 पहचान 2.0 का उपयोग कर रहा हूं, जहां एक एसक्यूएल डेटाबेस में प्रमाणीकरण विवरण संग्रहीत हैं। Asp.net पहचान को एक मानक तरीके से लागू किया गया है जैसा कि कई ऑनलाइन ट्यूटोरियल में पाया जा सकता है।
IdentityModels में ApplicationUser वर्ग को कुछ कस्टम गुणों को शामिल करने के लिए बढ़ाया गया है, जैसे कि पूर्णांक ऑर्गनाइजेशन। विचार यह है कि कई उपयोगकर्ताओं को डेटाबेस संबंध प्रयोजनों के लिए एक सामान्य संगठन को बनाया और सौंपा जा सकता है।
public class ApplicationUser : IdentityUser
{
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
{
// Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
// Add custom user claims here
return userIdentity;
}
//Extended Properties
public DateTime? BirthDate { get; set; }
public long? OrganizationId { get; set; }
//Key Mappings
[ForeignKey("OrganizationId")]
public virtual Organization Organization { get; set; }
}
मैं वर्तमान में एक नियंत्रक के भीतर से उपयोगकर्ता में लॉग इन की OrganIIII संपत्ति कैसे प्राप्त कर सकता हूं? क्या उपयोगकर्ता द्वारा लॉग इन करने के बाद यह विधि के माध्यम से उपलब्ध है या क्या मुझे हमेशा यूजरआईड के आधार पर, डेटाबेस से ऑर्गनाइजेशन को पुनः प्राप्त करना होता है, हर बार एक नियंत्रक विधि निष्पादित होती है?
वेब पर चारों ओर पढ़ना मैंने देखा है कि मुझे उपयोगकर्ता आईडी आदि में लॉग इन करने के लिए निम्नलिखित का उपयोग करने की आवश्यकता है।
using Microsoft.AspNet.Identity;
...
User.Identity.GetUserId();
हालाँकि, OrganizationId User.Identity में उपलब्ध संपत्ति नहीं है। क्या मुझे OrganizationId संपत्ति को शामिल करने के लिए User.Identity का विस्तार करने की आवश्यकता है? यदि हां, तो मैं इस बारे में कैसे जाऊंगा।
इसका कारण यह है कि मुझे अक्सर इस संगठन की आवश्यकता है कि कई तालिका क्वेरीज़ संगठन से संबंधित डेटा को पुनः प्राप्त करने के लिए OrganId पर निर्भर हैं जो उपयोगकर्ता में लॉग इन से जुड़ी है।