19 ответов:
Если вам нужно получить пользователя из контроллера, используйте
Userсвойства контроллера. Если вам это нужно с точки зрения, я бы заполнить то, что вам конкретно нужно вViewData, или вы можете просто позвонить пользователю, как я думаю, что это свойствоViewPage.
попробовать
HttpContext.Current.User.Public Shared Property Current () As Система.Сеть.HttpContext
члены системы.Сеть.HttpContextрезюме:
Возвращает или задает систему.Сеть.Объект HttpContext для текущего HTTP-запроса.Возвращаемые Значения:
система.Сеть.HttpContext для текущего HTTP-запрос
вы можете получить имя пользователя в ASP.NET MVC4 вот так:
System.Web.HttpContext.Current.User.Identity.Name
Я понимаю, что это действительно старый, но я только начинаю с ASP.NET MVC, поэтому я подумал, что засуну свои два цента в:
Request.IsAuthenticatedговорит вам, если пользователь аутентифицирован.Page.User.Identityдает вам идентификатор пользователя, вошедшего в систему.
Я использую:
Membership.GetUser().UserNameЯ не уверен, что это будет работать в ASP.NET MVC, но это стоит попробовать:)
чтобы ссылаться на идентификатор пользователя, созданный с помощью простой аутентификации, встроенной в ASP.NET MVC 4 в контроллере для целей фильтрации (что полезно, если вы используете database first и Entity Framework 5 для создания Привязок Code-first, а ваши таблицы структурированы так, что используется внешний ключ к идентификатору пользователя), вы можете использовать
WebSecurity.CurrentUserIdпосле добавления оператора using
using System.Web.Security;
имя пользователя:
User.Identity.Nameно если вам нужно получить только идентификатор, вы можете использовать:
using Microsoft.AspNet.Identity;таким образом, вы можете получить непосредственно идентификатор пользователя:
User.Identity.GetUserId();
эта страница может быть тем, что вы ищете:
использование Page.User.Identity.Name в MVC3вам просто нужно
User.Identity.Name.
использовать
System.Security.Principal.WindowsIdentity.GetCurrent().Name.это приведет к текущему вошедшему в систему пользователю Windows.
для чего это стоит, в ASP.NET MVC 3 Вы можете просто использовать User, который возвращает пользователя для текущего запроса.
Если вы находитесь внутри своей страницы входа, например, в событии LoginUser_LoggedIn, Current.User.Identity.Name возвращает пустое значение, поэтому вы должны использовать yourLoginControlName.Имя пользователя свойство.
MembershipUser u = Membership.GetUser(LoginUser.UserName);
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));
если вы работаете в Active Directory в интрасети, вот несколько советов:
(Windows Server 2012)
запуск всего, что говорит с AD на веб-сервере требует кучу изменений и терпения. Поскольку при запуске на веб-сервере против локального IIS / IIS Express он работает в удостоверении AppPool, поэтому вам нужно настроить его для олицетворения того, кто попадает на сайт.
как получить текущего вошедшего пользователя в active directory, когда ваш 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...вы должны обернуть любые вызовы, имеющие отношение к "контексту active directory" в следующем, чтобы он действовал как среда размещения для получения информации AD:
using (HostingEnvironment.Impersonate()){ ... }вы должны иметь
impersonateзначение true в файле web.config:<system.web> <identity impersonate="true" />вы должны иметь проверку подлинности Windows в интернете.config:
<authentication mode="Windows" />
мы можем использовать следующий код, чтобы получить текущий вошедший в систему пользователь 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'
In Asp.net MVC Identity 2, Вы можете получить текущее имя пользователя:
var username = System.Web.HttpContext.Current.User.Identity.Name;
Comments