प्रपत्र मॉडल में, मुझे वर्तमान लॉग-इन उपयोगकर्ता द्वारा प्राप्त करने के लिए उपयोग किया जाता है:
Page.CurrentUser
मुझे ASP.NET MVC में कंट्रोलर क्लास के अंदर वर्तमान उपयोगकर्ता कैसे मिलेगा?
प्रपत्र मॉडल में, मुझे वर्तमान लॉग-इन उपयोगकर्ता द्वारा प्राप्त करने के लिए उपयोग किया जाता है:
Page.CurrentUser
मुझे ASP.NET MVC में कंट्रोलर क्लास के अंदर वर्तमान उपयोगकर्ता कैसे मिलेगा?
जवाबों:
यदि आपको उपयोगकर्ता को नियंत्रक से प्राप्त करने की आवश्यकता है, तो नियंत्रक की User
संपत्ति का उपयोग करें । यदि आपको इसे देखने की आवश्यकता है, तो मैं आपको विशेष रूप से उस चीज़ को पॉप्युलेट करूंगा ViewData
, या आप उपयोगकर्ता को केवल कॉल कर सकते हैं क्योंकि मुझे लगता है कि यह एक संपत्ति है ViewPage
।
मैंने पाया कि User
काम करता है, वह है, User.Identity.Name
या User.IsInRole("Administrator")
।
Imports System.Web
इसके साथ और आगे की योग्यता प्राप्त करनी होगी HttpContext.Current.User.Identity.Name
, या पूर्ण सिंटैक्स का उपयोग करके सीधे अर्हता प्राप्त करनी होगी :System.Web.HttpContext.Current.User.Identity.Name
कोशिश करो HttpContext.Current.User
।
सार्वजनिक तौर पर साझा संपत्ति वर्तमान () के रूप में System.Web.HttpContext
System.Web.HttpContext के सदस्यसारांश:
वर्तमान HTTP अनुरोध के लिए System.Web.HttpContext ऑब्जेक्ट हो जाता है या सेट हो जाता है।वापसी मान:
वर्तमान HTTP अनुरोध के लिए System.Web.HttpContext
आप इस तरह ASP.NET MVC4 में उपयोगकर्ता का नाम प्राप्त कर सकते हैं:
System.Web.HttpContext.Current.User.Identity.Name
'System.Web.HttpContextBase' does not contain a definition for 'Current' and no extension method 'Current' accepting a first argument of type 'System.Web.HttpContextBase' could be found
, तो मैं सुझाव दूंगा कि इस तरह एक पूर्ण कॉल करें System.Web.HttpContext.Current.User.Identity.Name
।
मैं उपयोग करता हूं:
Membership.GetUser().UserName
मुझे यकीन नहीं है कि यह ASP.NET MVC में काम करेगा, लेकिन यह एक शॉट के लायक है :)
फ़िल्टरिंग के प्रयोजनों के लिए एक नियंत्रक में ASP.NET MVC 4 में निर्मित सरल प्रमाणीकरण का उपयोग करके बनाई गई उपयोगकर्ता आईडी को संदर्भित करने के लिए (जो कि यदि आप डेटाबेस-प्रथम और इकाई फ्रेमवर्क 5 का उपयोग कर रहे हैं तो कोड-प्रथम बाइंडिंग उत्पन्न करने के लिए और आपकी तालिकाओं को संरचित किया गया है) कि userID के लिए एक विदेशी कुंजी का उपयोग किया जाता है), आप उपयोग कर सकते हैं
WebSecurity.CurrentUserId
एक बार जब आप एक उपयोग कथन जोड़ते हैं
using System.Web.Security;
System.Security.Principal.WindowsIdentity.GetCurrent().Name
काम करता है MVC 5
। हालाँकि, जो उपयोगकर्ता नाम के साथ डोमेन नाम को खींचता है। यानी डोमेन \ उपयोगकर्ता नाम
ASP.Net MVC में उपयोगकर्ता को लॉग इन करने के लिए हम निम्नलिखित कोड का उपयोग कर सकते हैं:
var user= System.Web.HttpContext.Current.User.Identity.GetUserName();
भी
var userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name; //will give 'Domain//UserName'
Environment.UserName - Will Display format : 'Username'
उपयोगकर्ता नाम के साथ:
User.Identity.Name
लेकिन अगर आपको सिर्फ आईडी प्राप्त करने की आवश्यकता है, तो आप इसका उपयोग कर सकते हैं:
using Microsoft.AspNet.Identity;
तो, आप सीधे यूजर आईडी प्राप्त कर सकते हैं:
User.Identity.GetUserId();
यह पृष्ठ वह हो सकता है जो आप खोज रहे हैं:
MVC3 में Page.User.Identity.Name का उपयोग करना
आपको बस जरूरत है User.Identity.Name
।
का उपयोग करें System.Security.Principal.WindowsIdentity.GetCurrent().Name
।
यह वर्तमान लॉग-इन विंडोज उपयोगकर्ता को मिलेगा।
यदि आप अपने लॉगिन पृष्ठ के अंदर हैं, तो उदाहरण के लिए LoginUser_LoggedIn घटना में, Current.User.Identity.Name एक खाली मान लौटाएगा, इसलिए आपको अपनीLoginControlName.UserName संपत्ति का उपयोग करना होगा।
MembershipUser u = Membership.GetUser(LoginUser.UserName);
आप निम्नलिखित कोड का उपयोग कर सकते हैं:
Request.LogonUserIdentity.Name;
IPrincipal currentUser = HttpContext.Current.User;
bool writeEnable = currentUser.IsInRole("Administrator") ||
...
currentUser.IsInRole("Operator");
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));
यदि आप किसी इंट्रानेट पर सक्रिय निर्देशिका में काम कर रहे हैं, तो यहां कुछ सुझाव दिए गए हैं:
(विंडोज सर्वर 2012)
वेब सर्वर पर AD से बात करने वाली किसी भी चीज़ को चलाने के लिए परिवर्तनों और धैर्य का एक गुच्छा आवश्यक है। जब से एक वेब सर्वर बनाम स्थानीय IIS / IIS एक्सप्रेस पर चल रहा है, तो यह AppPool की पहचान में चलता है, इसलिए आपको इसे स्थापित करना होगा जो कोई भी साइट को हिट करता है।
जब आपके ASP.NET MVC एप्लिकेशन नेटवर्क के अंदर एक वेब सर्वर पर चल रहा हो, तो एक सक्रिय निर्देशिका में वर्तमान लॉग-इन उपयोगकर्ता कैसे प्राप्त करें:
// Find currently logged in user
UserPrincipal adUser = null;
using (HostingEnvironment.Impersonate())
{
var userContext = System.Web.HttpContext.Current.User.Identity;
PrincipalContext ctx = new PrincipalContext(ContextType.Domain, ConfigurationManager.AppSettings["AllowedDomain"], null,
ContextOptions.Negotiate | ContextOptions.SecureSocketLayer);
adUser = UserPrincipal.FindByIdentity(ctx, userContext.Name);
}
//Then work with 'adUser' from here...
आपको निम्नलिखित में 'सक्रिय निर्देशिका संदर्भ' के साथ करने के लिए किसी भी कॉल को लपेटना होगा ताकि यह AD जानकारी प्राप्त करने के लिए होस्टिंग वातावरण के रूप में कार्य कर रहा हो:
using (HostingEnvironment.Impersonate()){ ... }
आपको impersonate
अपने web.config में सही होना चाहिए :
<system.web>
<identity impersonate="true" />
आपके पास web.config में Windows प्रमाणीकरण होना चाहिए:
<authentication mode="Windows" />
Asp.net Mvc Identity 2 में, आप वर्तमान उपयोगकर्ता नाम से प्राप्त कर सकते हैं:
var username = System.Web.HttpContext.Current.User.Identity.Name;
IIS प्रबंधक में, प्रमाणीकरण के तहत, अक्षम करें: 1) अनाम प्रमाणीकरण 2) प्रपत्र प्रमाणीकरण
फिर सर्वर कंट्रोलर बनाम टेस्टिंग को संभालने के लिए अपने कंट्रोलर में निम्नलिखित जोड़ें:
string sUserName = null;
string url = Request.Url.ToString();
if (url.Contains("localhost"))
sUserName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
else
sUserName = User.Identity.Name;