2016-01-07 5 views
0

Я использую проверку подлинности форм.Перенаправление для некоторых страниц и запрет доступа для других?

В корневом 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 или перенаправить на другую страницу сбоев)?

ответ

0

Вы должны будете сделать это вручную путем создания процедуры, которая будет работать на Page_Init

Public Shared Sub CheckAccess() 
If My.User.IsAuthenticated And (Condition Here) Then 
Response.Redirect("AccessDenied.aspx") 
End If 
End Sub 

Protected Sub Page_Init (sender As Object, e As EventArgs) Handles Me.PageInit 
CheckAccess() 
End Sub 
+0

Некоторые из файлов, которые я хочу, чтобы запретить доступ к (путем возврата HTTP 403) являются графические файлы, PNG файлы, которые не имеют Page_Init. – ChrisW

+0

Вы должны разделить файлы в разных папках и установить их управление доступом в web.config –

+0

Я сделал это (как описано в OP), но файлы в запрещенных каталогах перенаправляют (HTTP 302) на страницу входа, что я спросил, является ли некоторые из них могут быть отказаны (HTTP 403). – ChrisW

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