У меня есть приложение ASP.NET MVC. Мне нужно кэшировать некоторые страницы, однако только для не прошедших проверку подлинности пользователей.Как отключить кэширование вывода для аутентифицированных пользователей в 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()
каждый раз, когда пользователь аутентифицируется, но для меня это выглядит огромной тратой ресурсов.
У вас есть какие-либо советы для меня?
Круто! Хорошее решение. –
Интересно - были ли у вас какие-либо проблемы с этим методом с этого поста (1 год назад)? Спасибо – UpTheCreek
@UpTheCreek: Мы используем немного более сложную версию этого кода в нашем продукте. Очевидно, я ничего не гарантирую, но по своему опыту это работает. –