Я использую проверку подлинности форм.Перенаправление для некоторых страниц и запрет доступа для других?
В корневом web.config есть ...
<authentication mode="Forms">
<forms loginUrl="~/Auth/Login.aspx" timeout="2880" defaultUrl="~/Search.aspx" />
</authentication>
... так что если неавторизованный пользователь не имеет доступа, с помощью записи как следующий в web.config в подпапке ...
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
... тогда не зарегистрированный пользователь перенаправляется на страницу Login.aspx.
Первого вопрос
Если неавторизованный пользователи запрашивает некоторые (но не все) страницы, или запрашивает файлы из одного подпапки (но не другие), я хочу, чтобы запретить доступ по возвращению HTTP 403 вместо перенаправления (HTTP 302) на страницу входа.
Как я могу это сделать? В настоящее время пользователи, не прошедшие проверку подлинности, неизменно перенаправляются на страницу «Вход», а не просто лишены доступа.
Второй вопрос
Я также использую «на основе ролей» привилегии, например, у меня есть роль имени Надзорные.
Доступ к определенным папкам предназначен только для руководителей, так эти папки имеют веб-конфигурация, как
<system.web>
<authorization>
<allow roles="Supervisor"/>
<deny users="*"/>
</authorization>
</system.web>
Если проверка подлинность пользователя (вошедшие в) без роли супервизора попытки доступа, они тоже перенаправлены Страница входа (хотя они уже вошли в систему).
Могу ли я каким-либо образом изменить это (например, вернуть HTTP 403 или перенаправить на другую страницу сбоев)?
Некоторые из файлов, которые я хочу, чтобы запретить доступ к (путем возврата HTTP 403) являются графические файлы, PNG файлы, которые не имеют Page_Init. – ChrisW
Вы должны разделить файлы в разных папках и установить их управление доступом в web.config –
Я сделал это (как описано в OP), но файлы в запрещенных каталогах перенаправляют (HTTP 302) на страницу входа, что я спросил, является ли некоторые из них могут быть отказаны (HTTP 403). – ChrisW