在收到来自 Azure AccessControl Service 2.0 的声明身份验证后,我试图找出 ASP.NET MVC3 基础结构中映射自定义用户信息(从本地数据库加载)的最佳扩展点在哪里
我试图通过覆盖 Microsoft.IdentityModel.Claims.ClaimsAuthenticationManager 类的 Authenticate 方法来实现这一点:
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 的较低级别的某个地方?