Я пытаюсь выяснить, где находится наилучшая точка расширения в инфраструктуре ASP.NET MVC3 для сопоставления пользовательской информации о пользователе (загруженной из локальной базы данных) после получения проверки подлинности утверждения от службы Azure AccessControl 2.0.
Я попытался добиться этого, переопределив метод Authenticate класса Microsoft.IdentityModel.Claims.ClaimsAuthenticationManager:
public class ClaimsTransformationModule : ClaimsAuthenticationManager
{
public override IClaimsPrincipal Authenticate(string resourceName, IClaimsPrincipal incomingPrincipal)
{
// Load User from database and map it to HttpContext
// Code here
return base.Authenticate(resourceName, incomingPrincipal);
}
}
Однако кажется, что этот метод вызывается более одного раза во время запроса на загрузку страницы. Загрузка пользовательской информации здесь может привести к проблемам с производительностью. Я хотел бы загружать их только один раз за аутентифицированный сеанс.
Есть ли лучшее место для этого? Возможно, где-то на более низком уровне, где создается IClaimsPrincipal?