Как получить текущего пользователя в ASP.NET MVC

В модели форм я использовал для получения текущего зарегистрированного пользователя:

Page.CurrentUser

Как получить текущего пользователя внутри класса контроллера в ASP.NET MVC?

257
05 нояб. '08 в 0:24
источник поделиться
20 ответов

Если вам нужно получить пользователя из контроллера, используйте свойство User контроллера. Если вам нужно это из представления, я бы заполнил то, что вам особенно нужно в ViewData, или вы можете просто позвонить пользователю, поскольку я считаю это свойством ViewPage.

250
05 нояб. '08 в 2:19
источник

Связанные вопросы


Похожие вопросы

Я обнаружил, что User работает, то есть User.Identity.Name или User.IsInRole("Administrator").

187
27 мая '09 в 18:02
источник

Попробуйте HttpContext.Current.User.

Общий общий ресурс недвижимости() As System.Web.HttpContext
    Член System.Web.HttpContext

Резюме:
Получает или задает объект System.Web.HttpContext для текущего HTTP-запроса.

Возвращаемые значения:
System.Web.HttpContext для текущего HTTP-запрос

55
05 нояб. '08 в 0:30
источник

Вы можете получить имя пользователя в ASP.NET MVC4 следующим образом:

System.Web.HttpContext.Current.User.Identity.Name
36
22 сент. '13 в 22:38
источник

Я понимаю, что это действительно старо, но я только начинаю работу с ASP.NET MVC, поэтому я думал, что буду придерживаться двух центов:

  • Request.IsAuthenticated указывает, аутентифицирован ли пользователь.
  • Page.User.Identity предоставляет идентификатор зарегистрированного пользователя.
20
25 марта '09 в 4:42
источник

Я использую:

Membership.GetUser().UserName

Я не уверен, что это сработает в ASP.NET MVC, но это стоит сделать:)

16
05 нояб. '08 в 0:29
источник

войти во имя пользователя: System.Web.HttpContext.Current.User.Identity.Name

11
08 сент. '10 в 15:50
источник

Чтобы ссылаться на идентификатор пользователя, созданный с использованием простой аутентификации, встроенной в ASP.NET MVC 4, в контроллер для целей фильтрации (что полезно, если вы сначала используете базу данных и Entity Framework 5 для генерации первых кодов привязки и ваших таблиц структурированы так, что используется внешний ключ для идентификатора пользователя), вы можете использовать

WebSecurity.CurrentUserId

после добавления оператора using

using System.Web.Security;
9
22 июня '13 в 22:12
источник

Имя_пользователя:

User.Identity.Name

Но если вам нужно получить только идентификатор, вы можете использовать:

using Microsoft.AspNet.Identity;

Итак, вы можете получить прямой идентификатор пользователя:

User.Identity.GetUserId();
7
12 янв. '17 в 16:44
источник

Эта страница может быть тем, что вы ищете:
Использование параметра Page.User.Identity.Name в MVC3

Вам просто нужно User.Identity.Name.

5
13 нояб. '11 в 11:51
источник

Используйте System.Security.Principal.WindowsIdentity.GetCurrent().Name.

Это приведет к загрузке текущего пользователя Windows.

5
17 авг. '15 в 21:04
источник

Если вы находитесь на своей странице входа в систему, например, в LoginUser_LoggedIn, Current.User.Identity.Name вернет пустое значение, поэтому вам нужно использовать свойство yourLoginControlName.UserName.

MembershipUser u = Membership.GetUser(LoginUser.UserName);
4
10 нояб. '11 в 16:44
источник

Мы можем использовать следующий код, чтобы получить текущий зарегистрированный пользователь в 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'
4
24 янв. '18 в 2:28
источник

Для чего стоит, в ASP.NET MVC 3 вы можете просто использовать User, который возвращает пользователя для текущего запроса.

4
13 сент. '11 в 22:10
источник
IPrincipal currentUser = HttpContext.Current.User;
bool writeEnable = currentUser.IsInRole("Administrator") ||
        ...
                   currentUser.IsInRole("Operator");
3
26 апр. '11 в 16:00
источник
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));
2
24 июня '15 в 10:47
источник

Вы можете использовать следующий код:

Request.LogonUserIdentity.Name;
2
14 авг. '17 в 14:42
источник

Если вы работаете в 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" />
2
22 янв. '16 в 19:19
источник

В Asp.net Mvc Identity 2 вы можете получить текущее имя пользователя:

var username = System.Web.HttpContext.Current.User.Identity.Name;
1
29 сент. '17 в 17:18
источник

В диспетчере 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;
0
01 мая '19 в 20:15
источник

Посмотрите другие вопросы по меткам или Задайте вопрос