В модели формы, я использовал для получения текущего вошедшего в систему пользователя по:Как получить текущего пользователя в ASP.NET MVC
Page.CurrentUser
Как получить текущего пользователя внутри класса контроллера в ASP.NET MVC?
В модели формы, я использовал для получения текущего вошедшего в систему пользователя по:Как получить текущего пользователя в ASP.NET MVC
Page.CurrentUser
Как получить текущего пользователя внутри класса контроллера в ASP.NET MVC?
Если вам необходимо получить пользователю в контроллере, используйте User
свойство контроллера. Если вам нужно это из представления, я бы заполнил то, что вам нужно в ViewData
, или вы могли бы просто позвонить пользователю, поскольку я думаю, что это свойство ViewPage
.
Я использую:
Membership.GetUser().UserName
Я не уверен, что это будет работать в ASP.NET MVC, но это стоит выстрел :)
Где это членство класс пришел? IntelliSense не распознает его по умолчанию. – 2008-11-04 21:31:00
Пространство имен System.Web.Security. Я не уверен, что это полезно в MVC, но я использую его с элементами управления входами для веб-форм. – Sean 2008-11-04 21:57:05
Это полезно в любом приложении ASP.NET, которое использует поставщиков членства. – jamiebarrow 2010-08-31 19:30:54
Попробуйте HttpContext.Current.User
.
Public Shared Current Property() As System.Web.HttpContext
Член System.Web.HttpContextРезюме:
Получает или задает объект System.Web.HttpContext для текущего HTTP запрос.Возвращаемые значения:
System.Web.HttpContext для текущего запроса HTTP
Очевидно, что HttpContext не имеет свойства «Current». – 2008-11-04 21:33:21
Думаю, вы двое говорите о двух разных вещах. System.Web.HttpContext и статическое свойство: System.Web.Mvc.Controller.HttpContext (который не имеет свойства «Current»). – 2008-11-04 23:31:25
Это работало в среде, отличной от MVC, именно то, что мне нужно.) – wdanda 2010-08-17 19:10:15
Я понимаю, что это на самом деле старый, но я просто начать работу с ASP.NET MVC, так что я бы придерживаться мои два цента:
Request.IsAuthenticated
говорит вам, если проверка подлинности пользователя ,Я обнаружил, что User
работы, то есть User.Identity.Name
или User.IsInRole("Administrator")
.
Большая помощь. Im on MVC3 – 2011-07-25 02:17:18
получение авторизовались пользователя: System.Web.HttpContext.Current.User.Identity.Name
IPrincipal currentUser = HttpContext.Current.User;
bool writeEnable = currentUser.IsInRole("Administrator") ||
...
currentUser.IsInRole("Operator");
Для чего это стоит, в ASP.NET MVC 3 можно использовать только пользователь, который возвращает пользователя для текущего запроса.
Если вы находитесь на своей странице входа в систему, например, в LoginUser_LoggedIn, Current.User.Identity.Name вернет пустое значение, поэтому вы должны использовать свойство yourLoginControlName.UserName.
MembershipUser u = Membership.GetUser(LoginUser.UserName);
Эта страница может быть то, что вы ищете:
Using Page.User.Identity.Name in MVC3
Вам просто нужно User.Identity.Name
.
Чтобы ссылаться на идентификатор пользователя, созданный с использованием простой аутентификации, встроенной в ASP.NET MVC 4 в контроллере для целей фильтрации (что полезно, если вы сначала используете базу данных и Entity Framework 5 для генерации кодовых первых привязок, а ваши таблицы структурированы так, чтобы использовался внешний ключ для идентификатора пользователя), вы можете использовать
WebSecurity.CurrentUserId
после добавления с помощью заявления
using System.Web.Security;
вы можете получить имя пользователя в ASP.NET MVC4 так:
System.Web.HttpContext.Current.User.Identity.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));
Использование System.Security.Principal.WindowsIdentity.GetCurrent().Name
.
Будет получен текущий пользователь Windows.
Если вам случится работать в Active Directory в интрасети, вот несколько советов:
(Windows Server 2012)
Запуск ничего, что говорит с AD на веб-сервере требует кучу изменений и терпение. Поскольку при работе на веб-сервере и локальном IIS/IIS Express он запускается в идентификаторе 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" />
Вы должны быть проверка подлинности Windows на в web.config:
<authentication mode="Windows" />
UserName с:
User.Identity.Name
Но если вам нужно получить только ID, вы можете использовать:
using Microsoft.AspNet.Identity;
Таким образом, вы можете получить Пользователь ID:
User.Identity.GetUserId();
Вы можете использовать следующий код:
Request.LogonUserIdentity.Name;
В ASP.NET MVC 2 Идентичность, Вы можете получить имя текущего пользователя с помощью:
var username = System.Web.HttpContext.Current.User.Identity.Name;
Мы можем использовать следующий код, чтобы получить текущий зарегистрированный пользователь в 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'
"или вы могли бы просто позвонить пользователю, как я думаю, это свойство ViewPage" - Так вы имеете в виду использование page.user, когда вы находитесь в представлении? – mawaldne 2009-11-28 20:14:39
Да, вы можете использовать его как «Привет, @ User.Identity.Name!» в cshtml. – Sean 2014-08-08 20:49:25