Ответ Хенрика хороший и должен работать, если правильно реализован. Тем не менее, это еще один вариант, который решает проблему более с точки зрения конфигурации. Я знаю, что вы упомянули, что вы не будете знать имена страниц заранее, поэтому вы не можете включить запись в web.config для каждой страницы, НО web.config также позволяет вам защищать папки. Вы можете разместить все страницы, требующие аутентификации, в папке с именем «AuthRequired», а все страницы, которые не требуют аутентификации, размещать, например, в папке с именем «Anonymous». Тогда в вашей веб-конфигурации у вас могут быть следующие записи:
<location path="AuthRequired">
<system.web>
<authorization>
<deny users="?" />
<allow users="*" />
</authorization>
</system.web>
</location>
<location path="Anonymous">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>