Аутентификация с помощью форм не разрешает доступ к целевой странице

У меня проблемы с моим приложением веб-форм asp.net 4.0, которое не разрешает анонимный доступ к целевой странице.

Моя проблема в следующем

  • Если я получаю доступ к сайту, используя URL-адрес «localhost/website/default.aspx», отображается страница по умолчанию. Когда я нажимаю кнопку входа в систему на странице, пользователи входят в систему, как и ожидалось.
  • Если я захожу на сайт, используя URL-адрес «localhost/website», пользователь попадает прямо на страницу входа. Ожидаемое поведение заключается в том, что будет отображаться страница default.aspx.

Я тестирую Windows 7/64 с использованием VS2010. Мой раздел web.config выглядит так

<authentication mode="Forms">
  <forms name=".xxxxADAuthCookie" loginUrl="~/Login.aspx" timeout="45"
         defaultUrl="~/secure/Default.aspx" slidingExpiration="true" />
</authentication>
<membership defaultProvider="MyADMembershipProvider">
  <providers>
    <clear />
    <add attributeMapUsername="sAMAccountName" name="MyADMembershipProvider"
         type="xxxxx.xxxxxxFormsAuthenticationMembershipProvider" />
  </providers>
</membership>
<authorization>
  <deny users="?" />
  <allow users="*" />
</authorization>
  <location path="default.aspx">
    <system.web>
      <authorization>
        <allow users="?" />
      </authorization>
    </system.web>
  </location>

person photo_tom    schedule 13.04.2015    source источник
comment
Убедитесь, что default.aspx находится вверху списка документов по умолчанию.   -  person Erik Funkenbusch    schedule 13.04.2015
comment
Вы хотите получить доступ к файлу default.aspx перед входом в систему?   -  person Angus Chung    schedule 14.04.2015
comment
да. Этого хотят пользователи.   -  person photo_tom    schedule 14.04.2015
comment
привет @photo_tom, это работает?   -  person Angus Chung    schedule 16.04.2015


Ответы (2)


Проверьте свой Web.config: defaultUrl="~/secure/Default.aspx" Папка "/secure/", не упомянутая в описанной выше иерархии.

Другой вариант: попробовать принудительно настроить маршрутизацию по умолчанию в Global.asax.cs (примерно так:)

    routes.MapRoute(
            "Default",
            "{controller}/{action}/{id}",
            new { controller = "website", action = "default", id = UrlParameter.Optional } 
person Joe Frank    schedule 13.04.2015
comment
Должен был прояснить ситуацию. У меня есть приложение веб-форм, а не MVC - person photo_tom; 13.04.2015

Я думаю, что вы можете установить свой loginUrl=Url по умолчанию.

<forms name=".xxxxADAuthCookie" loginUrl="~/secure/Default.aspx" timeout="45"
     defaultUrl="~/secure/Default.aspx" slidingExpiration="true" />


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

Попробуйте снова.

person Angus Chung    schedule 15.04.2015