ASP.net Core ResponseCache и RedirectToAction. Как можно кэшировать только анонимные ответы?
Дан следующий контроллер:
public class MyController : Controller
{
[AllowAnonymous]
[ResponseCache(VaryByQueryKeys = new string[] { "id" }]
public async IActionResult Action1(string id)
{
if (User.Identity.IsAuthenticated)
return RedirectToAction("Action2", new {id = id});
return View();
}
[Authorize]
public async IActionResult Action2(string id)
{
return View();
}
}
Предположим, что аутентифицированный пользователь переходит к "/Mycontroller/Action1/20". Будет ли кеширован ответ?
Если ответ "да", как можно кэшировать только анонимные ответы?
1 ответ
В показанном здесь коде ответ - нет. RedirectToAction отправит на ваш сайт отдельный запрос (перенаправление 301), который будет обрабатываться полностью независимо от первого запроса (к действию 1).
Стоит рассмотреть влияние кэширования ответов на неанонимных пользователей, но в этом случае ваш сценарий будет защищен от этих потенциальных последствий.