ASP.NET MVC поиск текущего имени пользователя в пользовательском фильтре действий

#asp.net-mvc #action-filter

#asp.net-mvc #действие-фильтр

Вопрос:

Я создаю пользовательский фильтр действий для asp.net MVC.

В OnActionExecuting() методе.

 public override void OnActionExecuting(ActionExecutingContext filterContext)
{
    string userName =  ?????// how can I get this?
}   
  

Мне нужно узнать текущее имя пользователя (я использую аутентификацию в формах)

В контроллере я могу просто сделать User.Identity.Name

Есть ли способ получить имя пользователя в ActionFilter?

Ответ №1:

 string userName = filterContext.HttpContext.User.Identity.Name;
  

И если вы хотите сначала проверить, есть ли аутентифицированный пользователь:

 string userName = null;
if (filterContext.HttpContext.User.Identity.IsAuthenticated)
{
    userName = filterContext.HttpContext.User.Identity.Name;
}
  

Комментарии:

1. Ну, это было невероятно просто, не уверен, почему мне так трудно его найти. Еще раз спасибо, Дарин!

2. @DarinDimitrov Как получить идентификатор пользователя вместо имени? В действии контроллера я могу просто использовать User.Identity.GetUserId();