Получение имени пользователя для входа в приложение интрасети ASP.NET MVC3

Я работаю над приложением интрасети MVC 3 (проверка подлинности Windows). Приложение должно отображать страницу профиля пользователя после того, как пользователь входит в систему. Для этого имя пользователя, вошедшего в систему, должно быть передано в качестве параметра маршрута в следующем маршруте в Global.asax.cs.

routes.MapRoute(
    "Initial",
    "{controller}/{action}/{emailAlias}", // URL with parameters
    new { controller = "Home", action = "Home", userId = ****}
);

Здесь я использовал несколько альтернатив.

  1. Сначала я использовал Environment.Username . Что хорошо работает в разработке. Но не после публикации. Потому что тогда Environment.Username дает имя пула приложений, в котором работает приложение. Как описано здесь .

  2. Controller.User.Identity.Name используется для получения желаемого имени пользователя в контроллерах, хорошо работает до и после публикации. Но его нельзя использовать в контексте Global.asax.cs.

  3. System.Web.HttpContext.Current.User.Identity.Name возвращает пустую ссылку.

  4. System.Security.Principal.WindowsIdentity.GetCurrent (). Name работает примерно так же, как Environment.Username

Я уверен, что теперь легко понять, что я нуб . Может, я упустил что-то очевидное. Если да, то укажите это или заранее сообщите мне о простом решении.

10
задан phabtar 22 July 2011 в 06:22
поделиться