ASP.NET Forms Authentication - ошибки JavaScript на странице входа (при посещении анонимными пользователями)

Только на моей странице входа в систему я получаю 18 ошибок JavaScript, и главная из них выглядит так: "Не удалось загрузить клиентскую среду ASP.NET Ajax". У меня такое чувство, что это связано с безопасностью, поскольку я недавно добавил на сайт проверку подлинности с помощью форм. Если я войду в систему, все ошибки исчезнут.

Кажется, что sys не определена, когда эта строка пытается запустить:

if (typeof(Sys) === 'undefined') throw new Error('ASP.NET Ajax client-side framework failed to load.');

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

<authentication mode="Forms">
  <forms name=".FormsAuthCookie" loginUrl="Security/Login" protection="All" timeout="120" cookieless="AutoDetect" />
</authentication>
<authorization>
  <deny users="?"/>
</authorization>

ОСНОВНАЯ ПРОБЛЕМА после добавления deny users="?": Клиентская среда ASP.NET Ajax не загружается на мою страницу Login.aspx, когда анонимный пользователь посещает сайт.

ОБНОВИТЬ:::
Это действительно не имеет особого смысла, но после добавления EnableCdn="true" в мой диспетчер скриптов я не получаю никаких ошибок, когда анонимный пользователь заходит на страницу входа в систему.... Просто кажется, что это взлом для любого моего фактического проблема в том, что это чистый проект.net webforms.

<asp:ScriptManager runat="server" EnableCdn="True">

2 ответа

Решение

Похоже, аутентификация блокирует доступ к библиотеке JavaScript. Если вы просматриваете вкладку сети в Chrome, вы получаете какие-либо ошибки при загрузке файлов JS? если это так, я бы сказал, добавить исключение в каталог в вашем файле конфигурации.

Что-то вроде:

<location path="js">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>

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

Основываясь на принятом ответе выше, здесь web.config Конфигурация необходима, если вы работаете с шаблоном проекта приложения Visual Studio 2015 ASP.NET 4.5 WebForms:

<location path="bundles">
  <system.web>
    <authorization>
      <allow users="*"/>
    </authorization>
  </system.web>
</location>

bundles папка не существует физически, но является виртуальным путем для связанных сценариев. Увидеть App_Start\BundleConfig.cs для дополнительной информации.

Обратите внимание, что разрешение доступа к ScriptResource.axd и / или WebResource.axd в web.config как предложено снова и снова во многих других потоках, просто не будет работать с настройкой связывания шаблона проекта Visual Studio 2015 ASP.NET 4.5 WebForms Application.

Другие вопросы по тегам