2014-12-04 2 views
0

У меня есть в моем файле web.config в каждом каталоге некоторые параметры доступа для каждой страницы в каталоге, например.Перенаправлять пользователя на пользовательский доступ запрещен страница

<location path="orderForm.aspx"> 
    <system.web> 
     <authorization> 
     <allow roles="AdmStf" /> 
     <allow roles="OrdPage" /> 

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

Это работает отлично. Но, когда пользователь не имеет правильного уровня доступа, пользователь автоматически перенаправляется на страницу Default.aspx в корневом каталоге.

Что бы я хотел сделать, на самом деле отправить пользователя на пользовательскую страницу AccessDenied.aspx.

в моем главном файле web.config У меня есть следующие ...

<customErrors mode="On" defaultRedirect="~/Views/Err/Error.aspx"> 
    <error statusCode="401" redirect="~/Views/Err/AccessDenied.aspx" /> 
</customErrors> 

Но это не работает, как я ожидал, что это. Пользователь по-прежнему перенаправляется на страницу Default.aspx.

Есть ли способ достичь того, что я хочу здесь?

+0

Не перенаправляйте пользователей в условиях ошибки - вместо этого подавайте ответ об ошибке с заголовком ответа 401, иначе браузер или другие UA не признают, что ответ действительно является ошибкой. – Dai

+0

как вы это делаете? – Stuart

+0

все, что я читал в интернете, кажется, указывает на это, поэтому я не уверен, почему это не работает, обычно это обозначается как ответ на проблему ... – Stuart

ответ

1

Вы можете проверить это (customerrors for 401.2 in ASP.NET)

В качестве обходного пути, вы можете справиться с этим в Authenication_Request события в Global.asax и перенаправить неавторизованных пользователей

Однако моя рекомендация состоит в том, чтобы перенаправить несанкционированные запросы войти на странице. так как запросчик может быть разрешен, но просто забыл войти в систему. Таким образом, ваш подход добавит дополнительный шаг.

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