Контекст:Пользовательские модуль аутентификации внутри MVC3 веб-приложение
У нас есть внутренний веб-приложение Asp.Net, который настроен на использование проверки подлинности Windows. В рамках этого аспекта аутентификации у нас есть HttpModule, который по существу захватывает имя HttpContext.Current.Identity.Name и возвращает объект UserInfo, который попадает в коллекцию HttpContext.Items.
При переносе этого над MVC3 у меня есть базовый контроллер и OnActionExecuting, я вообще не вижу этот элемент UserInfo в коллекции. Любое понимание было бы здорово. Вот мои настройки:
BaseController:
protected override void OnActionExecuting(ActionExecutingContext ctx)
{
if (ctx.HttpContext.Items["UserInfo"] != null)
{
UserInfo currentUser = (UserInfo)ctx.HttpContext.Items["UserInfo"];
dynamic viewBag = ctx.Controller.ViewBag;
viewBag.CurrentUser = currentUser;
}
else
{
// Unauthorized do something
}
base.OnActionExecuting(ctx);
}
web.config:
<system.web>
<httpModules>
<add type="WFS.SIG.Client.Security.Authentication.WindowsAuthentication, WFS.SIG.Client.Security" name="AuthenticationModule"/>
</httpModules>
</system.web>....
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules runAllManagedModulesForAllRequests="true">
<add name="AuthenticationModule" type="WFS.SIG.Client.Security.Authentication.WindowsAuthentication, WFS.SIG.Client.Security" />
</modules>
</system.webServer>
Взгляните на http://stackoverflow.com/questions/1134442/httpcontext-items-with-asp-net-mvc – Gats
Оказывается, проблема была в HTTP-модуле. Он обслуживал запросы только для файлов .aspx, .svc и .ascx. Для MVC запросчик является контроллером, и он не обслуживает. Теперь элемент UserInfo в коллекции проходит. – VajNyiaj