В модели форм я использовал текущего вошедшего в систему пользователя:
Page.CurrentUser
Как получить текущего пользователя внутри класса контроллера в ASP.NET MVC?
В модели форм я использовал текущего вошедшего в систему пользователя:
Page.CurrentUser
Как получить текущего пользователя внутри класса контроллера в ASP.NET MVC?
Ответы:
Если вам нужно получить пользователя из контроллера, используйте User
свойство Controller. Если вам это нужно с точки зрения, я бы заполнил то, что вам конкретно нужно 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
.
Открытое общее свойство Current () как
член System.Web.HttpContext из System.Web.HttpContextСводка.
Получает или задает объект System.Web.HttpContext для текущего HTTP-запроса.Возвращаемые значения:
System.Web.HttpContext для текущего HTTP-запроса.
Вы можете получить имя пользователя в 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 в контроллере для целей фильтрации (что полезно, если вы сначала используете базу данных и Entity Framework 5 для генерации привязок кода и ваши таблицы структурированы так, что внешний ключ к идентификатору пользователя используется), вы можете использовать
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();
Эта страница может быть тем, что вы ищете:
Использование Page.User.Identity.Name в MVC3
Тебе просто нужно User.Identity.Name
.
использование System.Security.Principal.WindowsIdentity.GetCurrent().Name
.
Это получит текущего пользователя Windows, вошедшего в систему.
Вы можете использовать следующий код:
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));
Если вы работаете в 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
установить значение true в вашем файле web.config:
<system.web>
<identity impersonate="true" />
Вы должны включить проверку подлинности Windows в файле web.config:
<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;