c# - एएसपी.नेट एमवीसी में वर्तमान उपयोगकर्ता कैसे प्राप्त करें




.net asp.net-mvc (13)

Asp.net एमवीसी पहचान 2 में, आप वर्तमान उपयोगकर्ता नाम प्राप्त कर सकते हैं:

var username = System.Web.HttpContext.Current.User.Identity.Name;

https://code.i-harness.com

एक फॉर्म मॉडल में, मैं वर्तमान लॉग-इन उपयोगकर्ता को निम्न द्वारा प्राप्त करता था:

Page.CurrentUser

मैं वर्तमान उपयोगकर्ता को एएसपी.नेट एमवीसी में नियंत्रक वर्ग के अंदर कैसे प्राप्त करूं?


आप इस तरह के एएसपी.नेट एमवीसी 4 में उपयोगकर्ता का नाम प्राप्त कर सकते हैं:

System.Web.HttpContext.Current.User.Identity.Name

इसके लिए क्या है, एएसपी.नेट एमवीसी 3 में आप केवल उपयोगकर्ता का उपयोग कर सकते हैं जो उपयोगकर्ता को वर्तमान अनुरोध के लिए लौटाता है।


उपयोगकर्ता नाम के साथ:

User.Identity.Name

लेकिन अगर आपको केवल आईडी प्राप्त करने की आवश्यकता है, तो आप इसका उपयोग कर सकते हैं:

using Microsoft.AspNet.Identity;

तो, आप सीधे उपयोगकर्ता आईडी प्राप्त कर सकते हैं:

User.Identity.GetUserId();

फ़िल्टरिंग उद्देश्यों के लिए नियंत्रक में एएसपी.नेट एमवीसी 4 में बनाए गए सरल प्रमाणीकरण का उपयोग करके बनाए गए उपयोगकर्ता आईडी को संदर्भित करने के लिए (यदि आप पहले डेटाबेस का उपयोग कर रहे हैं और कोड-प्रथम बाइंडिंग जेनरेट करने के लिए एंटीटी फ्रेमवर्क 5 और आपकी टेबलें संरचित हैं तो सहायक है। कि उपयोगकर्ता आईडी के लिए एक विदेशी कुंजी का उपयोग किया जाता है), आप इसका उपयोग कर सकते हैं

WebSecurity.CurrentUserId

एक बार जब आप एक प्रयोग कथन जोड़ते हैं

using System.Web.Security;

मुझे एहसास है कि यह वास्तव में पुराना है, लेकिन मैं बस एएसपी.नेट एमवीसी के साथ शुरू कर रहा हूं, इसलिए मैंने सोचा कि मैं अपने दो सेंट चिपकाना चाहूंगा:

  • Request.IsAuthenticated । प्रमाणीकृत आपको बताता है कि उपयोगकर्ता प्रमाणित है या नहीं।
  • Page.User.Identity आपको लॉग-इन उपयोगकर्ता की पहचान देता है।

मैंने पाया कि User काम करता है, User.Identity.Name , User.Identity.Name या User.IsInRole("Administrator")


यदि आप अपने लॉगिन पेज के अंदर हैं, तो उदाहरण के लिए LoginUser_LoggedIn ईवेंट में, Current.User.Identity.Name एक खाली मान वापस कर देगा, इसलिए आपको अपनी LoginControlName.UserName प्रॉपर्टी का उपयोग करना होगा।

MembershipUser u = Membership.GetUser(LoginUser.UserName);

यदि आपको उपयोगकर्ता को नियंत्रक के भीतर से प्राप्त करने की आवश्यकता है, तो नियंत्रक की User संपत्ति का उपयोग करें। यदि आपको इसे देखने की ज़रूरत है, तो मैं आपको ViewData में विशेष रूप से आवश्यक चीज़ों को पॉप्युलेट कर ViewData , या आप केवल उपयोगकर्ता को कॉल कर सकते हैं क्योंकि मुझे लगता है कि यह ViewPage संपत्ति है।



HttpContext.Current.User आज़माएं।

सार्वजनिक साझा संपत्ति वर्तमान () System.Web.HttpContext के रूप में
System.Web.HttpContext के सदस्य

सारांश:
वर्तमान HTTP अनुरोध के लिए System.Web.HttpContext ऑब्जेक्ट को प्राप्त या सेट करता है।

वापसी मूल्य:
वर्तमान HTTP अनुरोध के लिए System.Web.HttpContext


System.Security.Principal.WindowsIdentity.GetCurrent().Name उपयोग करें System.Security.Principal.WindowsIdentity.GetCurrent().Name

यह वर्तमान लॉग-इन विंडोज उपयोगकर्ता प्राप्त करेगा।


var ticket = FormsAuthentication.Decrypt(
                    HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName].Value);

if (ticket.Expired)
{
    throw new InvalidOperationException("Ticket expired.");
}

IPrincipal user =  (System.Security.Principal.IPrincipal) new RolePrincipal(new FormsIdentity(ticket));





forms-authentication