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).

Стоит рассмотреть влияние кэширования ответов на неанонимных пользователей, но в этом случае ваш сценарий будет защищен от этих потенциальных последствий.

Другие вопросы по тегам