2016-02-18 5 views
1

У меня есть страница default.aspx, на которую я хочу запретить доступ к анонимным пользователям и в той же папке (в корневой папке), у меня есть Logon.aspx, которые я явно хочу, чтобы анонимные пользователи получили доступ , Я попытался следующие, как указано на Microsoft's support site, но я получаю 401 при попытке доступа к Logon.aspx:asp.net 4 WebForms не может получить доступ к странице входа из-за правила авторизации

<system.web> 
    <authentication mode="Forms" > 
     <forms loginUrl="Logon.aspx" name=".VISITAUTH"></forms> 
    </authentication> 
    <authorization> 
     <deny users ="?" /> 
    </authorization> 
</system.web> 
<location path="Logon.aspx"> 
     <system.web> 
     <authorization> 
      <allow users ="*" /> 
     </authorization> 
     </system.web> 
</location> 

Кто-нибудь есть идея о том, что я не хватает? Моим другим вариантом является написать некоторый код для обработки этого события Application_BeginRequest в global.asax, но он надеялся сделать все так, как мне говорит Microsoft.

ответ

0

Вместо этого я решил создать папку с именем admin, которая содержала все приложение и оставила вход в корневой каталог, поэтому правила авторизации применяются только к папке администратора. Либо поддержка Microsoft - это BS, либо я что-то упускаю.

Примечание: Если кто-то там споткнется через эту тему в ближайшие годы, я буду рад дать вам кредит за то, что дал мне достойный ответ.

0

Недавно я начал с .Net 4.x/Visual Studio 2015 (обновлен от VS2008) и столкнулся с той же проблемой, когда хотел добавить быстрый и простой механизм аутентификации в рабочее веб-приложение. Одной из вещей, которые привлекли мое внимание, было переписывание URL: при вводе «Login.aspx» веб-адрес был изменен на «Вход» без расширения .aspx, поэтому я пробовал несколько вещей и вот решение:

<system.web> 
    <authentication mode="Forms" > 
     <forms loginUrl="Logon.aspx" name=".VISITAUTH"></forms> 
    </authentication> 
    <authorization> 
     <deny users ="?" /> 
    </authorization> 
</system.web> 
<location path="Logon.aspx"> 
     <system.web> 
     <authorization> 
      <allow users ="*" /> 
     </authorization> 
     </system.web> 
</location> 
<location path="Logon"> 
     <system.web> 
     <authorization> 
      <allow users ="*" /> 
     </authorization> 
     </system.web> 
</location> 

Второе место («Вход») - это переписывание первого («Logon.aspx») и, следовательно, ему нужны те же правила авторизации.

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

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