Foi assim que resolvi isso.
Precisamos ter as seguintes premissas em mente:
- ARR identifica itens em cache com sua URL (que, dependendo da configuração, inclui a string de consulta; essa deve ser a configuração).
- Durante uma solicitação, o ARR pode ser instruído a não armazenar em cache a saída da solicitação atual.
- Se a saída da solicitação atual (URL) foi armazenada em cache antes, não é possível saber como instruir a ARR a não usar a versão em cache.
A grande ideia é alterar o URL do pedido, ou melhor, reescrevê-lo de forma diferente com o URL do IIS, reconfigurando, dependendo se o usuário é autenticado ou não. Usuários não autenticados obtêm todas as páginas exibidas com, por exemplo, / my-page? autenticado = falso e autenticado com / my-page? authenticated = true. As páginas serão armazenadas em cache apenas para usuários anônimos, para que o ARR não encontre nenhuma entrada de cache correspondente para usuários autenticados. Assim, o terceiro ponto é resolvido. No lado negativo, a string de consulta que você anexa aos URLs pode aparecer no corpo HTML, e eles devem ser removidos com o URL do IIS Rewrite.
Para instruir a ARR a não armazenar em cache a solicitação atual, defina a variável de servidor ARR_CACHE_CONTROL_OVERRIDE como "1, no-cache" (isso pode ser feito a partir de regras de reconfiguração).
Você pode detectar se o usuário é autenticado a partir de uma URL do IIS. Voltar ao topo rewrite-provider-for-url-rewrite-module "> tutorial ), ou seja, você pode usar a saída de um provedor para reescrever a URL de forma diferente para usuários autenticados e anônimos.
Espero que ajude alguém.