У меня есть приложение ASP.NET MVC. Мне нужно кэшировать некоторые страницы, однако только для пользователей, не прошедших проверку подлинности.
Я попытался использовать VaryByCustom="user"
со следующей реализацией GetVaryByCustomString
:
public override string GetVaryByCustomString(HttpContext context, string custom)
{
if (custom == "user")
{
if (context.User.Identity.IsAuthenticated)
{
return context.User.Identity.Name;
}
else
{
return "";
}
}
return base.GetVaryByCustomString(context, custom);
}
Однако это не совсем то, что мне нужно, потому что страницы все еще кэшируются. Разница только в том, что теперь кэшируется для каждого пользователя отдельно.
Одним из возможных решений является возвращение Guid.NewGuid()
каждый раз, когда пользователь аутентифицируется, но для меня это выглядит огромной тратой ресурсов.
У вас есть какие-нибудь советы для меня?