Ho un'applicazione ASP.NET MVC. Devo memorizzare alcune pagine tuttavia solo per utenti non autenticati.Come disattivare la cache di output per gli utenti autenticati in ASP.NET MVC?
Ho cercato di usare VaryByCustom="user"
con l'implementazione GetVaryByCustomString
seguente:
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);
}
Tuttavia questo non è esattamente quello che mi serve perché le pagine sono ancora memorizzate nella cache. L'unica differenza è che ora viene memorizzato nella cache per ciascun utente separatamente.
Una possibile soluzione è quella di restituire Guid.NewGuid()
ogni volta che l'utente viene autenticato, ma mi sembra un enorme spreco di risorse.
Quindi hai qualche consiglio per me?
Fantastico! Bella soluzione –
Interessante - hai avuto problemi con questo metodo da questo post (1 anno fa)? Grazie – UpTheCreek
@UpTheCreek: Utilizziamo una versione leggermente più complicata di questo codice nel nostro prodotto. Ovviamente non garantisco nulla, ma nella mia esperienza funziona. –