2015-09-21 1 views
0

У меня есть сайт asp.net mvc. И я хочу запретить доступ к определенной папке и ее содержимому на этом веб-сайте. Я сделал это в web.config отказа в доступе к анонимным пользователям, используя следующие:Почему файл по-прежнему доступен (пока кеш не очищен), когда анонимный доступ запрещен через web.config в родительской папке?

<system.web> 
    <authorization> 
     <deny users="?" /> 
    </authorization> 
</system.web> 

Теперь я столкнулся с проблемой, когда я пытаюсь получить доступ к файлу из этой папки после выхода.

Если я попытаюсь получить доступ к любому файлу, скажите текстовый файл без входа в систему из URL-адреса браузера, он перенаправляет меня на страницу входа в систему, как и ожидалось.

URL-адрес, например: «https://www.mywebsite.com/Content/MyNotepad.txt».

Если я ударил этот выше URL после входа в систему, файл открывается снова, как и ожидалось.

Но после выхода из системы я столкнулся с проблемой. Файл остается доступным даже после выхода. Его единственный, когда я делаю Ctrl + F5, перенаправляет меня на страницу входа.

Я знаю, что это некоторое кэширование, которое вызывает это, но я не могу найти решение для этого. Любая помощь приветствуется.

+0

Вы можете отключить кеширование в web.config, добавив соответствующие заголовки: http://stackoverflow.com/questions/3929284/how-do-i-disable-caching-of-an-individual-file-in- iis-7-using-weserver-config-se – NightOwl888

ответ

2

Если файл кэширован, браузеру не нужно ударять по серверу, чтобы получить его.

Если браузер не попал на сервер, чтобы получить его, тогда какое значение имеет вопрос, считается ли сервер «вошедшим в систему» ​​или нет?

Если вы установили настройку кеша max-age=0, must-revalidate, proxy-revalidate, браузер сразу же рассмотрит ответ как устаревший и что устаревший ответ никогда не будет приемлемым и поэтому снова ударит по серверу.

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

Если, однако, ресурс настолько чувствителен, что даже пользователи, которые выкапывают в кэшах браузеров ручную неприемлемую утечку, вам нужно будет установите заголовок кэша no-cache, чтобы предотвратить это.

+0

Я попытался добавить эти заголовки, но они не сработали для меня. Кажется, что браузер выбрал файл из своего кеша (временные интернет-файлы). –

Смежные вопросы