HttpContext.Current.User.Identity.Name возвращает значение null

System.Web.HttpContext.Current.User.Identity.Name возвращает "ноль".

Я точно авторизован.

Как это решить?

protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
     base.OnActionExecuting(filterContext);

     if (Session["FirstName"] == null)
     {
         string loginName = System.Web.HttpContext.Current.User.Identity.Name;
         string networkId = loginName.Split('\\')[1];
         Session["FirstName"] = new AD_Utility().FirstName(networkId);
     }
     ViewBag.FirstName = Session["FirstName"];
}

person Susan    schedule 30.08.2011    source источник
comment
попробуйте взглянуть на этот другой вопрос HttpContext.Current.User. Identity.Name всегда является строкой.Empty   -  person Paolo Falabella    schedule 30.08.2011


Ответы (1)


Какую аутентификацию вы настроили в своем web.config? Кроме того, вы используете IIS или веб-сервер разработки? Возможно, вам потребуется включить аутентификацию форм или Windows в IIS или в файле web.config.

Надеюсь это поможет.

Редактировать:-

Пожалуйста, обратитесь к ссылке, которую Паоло разместил выше. У него есть достойный пример использования аутентификации форм в ASP.NET MVC. Я давно не играл с ASP.NET MVC, но я думаю, что ваша проблема в том, что HttpContext.Current.User никогда не заполнялся после аутентификации вашего пользователя. Убедитесь, что вы используете FormsAuthentication.SetAuthCookie и FormsAuthentication.RedirectFromLoginPage в своей функции аутентификации.

Кроме того, из вашего вопроса выше кажется, что вы можете использовать AD в качестве хранилища безопасности. Возможно, вы захотите изучить возможность использования проверки подлинности Windows, поскольку она должна автоматически заполнять HTTPContext.Current.User.

person Nabheet    schedule 30.08.2011
comment
Режим аутентификации = формы - person Susan; 30.08.2011