Я работаю над приложением с использованием ASP.NET MVC 1.0, и я пытаюсь внедрить собственный объект IPrincipal в объект HttpContext.Current.User.
В традиционном приложении WebForms я использовал событие Application_AuthenticateRequest, чтобы сделать это следующим образом.
protected void Application_AuthenticateRequest(object sender, EventArgs e)
{
if (HttpContext.Current.User != null)
{
if (HttpContext.Current.User.Identity.IsAuthenticated)
{
if (HttpContext.Current.User.Identity is FormsIdentity)
{
// Get Forms Identity From Current User
FormsIdentity id = (FormsIdentity)HttpContext.Current.User.Identity;
// Get Forms Ticket From Identity object
FormsAuthenticationTicket ticket = id.Ticket;
// Create a new Generic Principal Instance and assign to Current User
SiteUser siteUser = new SiteUser(Convert.ToInt32(id.Name));
HttpContext.Current.User = siteUser;
}
}
}
}
Таким образом, используя это, я смог получить доступ к своему пользовательскому IPrincipal, либо явно наложив объект User на тип SiteUser. Я на самом деле сделал это, создав собственный класс, который наследует все страницы, из которых это делается под обложками для меня.
Во всяком случае, моя проблема заключается в том, что с ASP.NET MVC приложение Application_AuthenticateRequest срабатывает всякий раз, когда делается какой-либо запрос (например, для файлов JS, изображений и т.д.), из-за чего приложение умирает.
Любая помощь или предложения относительно того, как я могу начать вводить свой пользовательский IPrincipal в объект HttpContext.Current.User в ASP.NET MVC 1.0, будут очень признательны. Я видел следующий пост на SO, но, похоже, он не удовлетворял тем, чего я пытаюсь достичь: ASP.NET MVC - установка пользовательского IIdentity или IPrincipal
ТИА.