Формировать контекст безопасности при каждом http запросе мне кажется неразумным с точки зрения производительности.
Альтернативный вариант — использовать Session_Start в Global.asax. Если ли в этом случае противопоказания?
public IPrincipal User
{
get
{
if (this.HttpContext != null)
return this.HttpContext.User;
else
return (IPrincipal) null;
}
}