0

Прежде всего, я только сейчас знаком с проблемами, касающимися сервисов Autorization и JSON. См.: How to manage a redirect request after a jQuery Ajax call.Авторизация, JSON и Перенаправление в ASP.NET

Моей ситуация: У меня есть каталог администратора, со своей собственной директорией «админами», отказывая неаутентифицированные пользователь:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <system.web> 

    <authorization> 
     <deny users="?" /> 
    </authorization> 

    </system.web> 
</configuration> 

В этом каталоге моей главная страница и два Http Обработчиков, которые я использую для загрузка файлов, а что нет. Теперь, когда у меня есть код для обработки ситуации, когда пользователь несанкционирован, когда обработчик получает доступ через GET или POST, кажется, что обработчик никогда не выполняется, а GET/POSTs перенаправляются на страницу входа. Я полагаю, что все это хорошо и хорошо, но мне бы очень хотелось, чтобы обработчики HTTP сами справлялись с проблемой и обрабатывали ее по-разному (по крайней мере, давали бы что-то вроде кода 401 вместо перенаправления).

Похоже, что это должно быть довольно легко (и я держал пари, что, вероятно, это легко) совать отверстия, чтобы обработчики HTTP для обработки их собственной безопасности, но я вроде в конце моего остроумия, поэтому я надеялся, что кто-то любезно покажет мне, как мне нужно изменить веб-конфигурацию, чтобы эти службы могли обрабатывать свою собственную авторизацию. Благодаря!

ответ

1

Вы пробовали указать для каждого из них?

<location allowOverride="false" path="Content"> 
    <system.web> 
     <authorization> 
     <allow users="*" /> 
     </authorization> 
    </system.web> 
    </location> 
    <location allowOverride="false" path="Scripts"> 
    <system.web> 
     <authorization> 
     <allow users="*" /> 
     </authorization> 
    </system.web> 
    </location> 

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

+0

Да, я только что попробовал это. он работает, но ... теперь что-то, кажется, перехватывает мой обработчик и меняет мои 401 на перенаправления, что действительно запутывает (я знаю, что он теперь входит в мой обработчик, потому что отладчик говорит мне об этом). – JayC

+1

Я иду вперед и принимаю ответ Hupperware, поскольку он отвечает на мой вопрос, но оказывается, что я задавал неправильный вопрос *. Оказывается, ASP.NET по умолчанию регистрирует HTTP-модуль ('FormsAuthenticationModule'), который превращается в 401 UnAuthorized в 302 перенаправления. Кроме того, отключение этого модуля не является тривиальным. Существует несколько вариантов, описанных в http://haacked.com/archive/2011/10/04/prevent-forms-authentication-login-page-redirect-when-you-donrsquot-want.aspx. О, и если вы используете решение Haack или его производные, ожидайте использовать IIS Express. – JayC