Проверка подлинности с помощью форм не работает после публикации - PullRequest
0 голосов
/ 24 января 2012

Я работал над проектом веб-сайта, который ограничивает доступ к определенной папке анонимным пользователям и разрешает доступ к папке тем, кто вошел в систему. Это отлично работает на моей машине разработки.

Однако с момента публикации веб-сайта и его развертывания на веб-сервере (Windows Server 2008, IIS7) проверка подлинности с помощью форм не работает. Анонимные пользователи могут получить доступ к «ограниченной» папке. Я сравнил webconfig как на компьютере разработчика, так и на веб-сервере, и они абсолютно одинаковы.

Я установил доступ / ограничение к каталогу на компьютере разработчика, используя инструмент администрирования веб-сайта, встроенный в .NET Framework, с помощью этого учебного пособия . Однако я понимаю, что этот инструмент только localhost?

Обратите внимание: я не использую asp.net контроль входа и регистрации. Я использую пользовательскую функцию в коде (C #)

Эта проблема вызвана сменой местоположения? Каталог машины разработчика: C: \ Users \ Megatron \ Documents \ Visual Studio 2010 \ Projects \ Osqar - v0.2 \ OSQARv0.1 Каталог веб-сервера: C: \ inetpub \ wwwroot \ Osqar

Я немного растерялся, поэтому любой совет будет принят с благодарностью.

Вот файл веб-конфигурации

<?xml version="1.0" encoding="UTF-8"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
    <connectionStrings>
        <add name="dbConn" connectionString="data source=mssql.database.com; Initial Catalog=devworks_oscar;User ID=myusername;Password=password" providerName="System.Data.SqlClient" />
    </connectionStrings>
    <system.web>
        <authentication mode="Forms">
            <forms name="Osqar" loginUrl="/login/login.aspx" protection="All" path="/" timeout="60" />
        </authentication>

        <compilation debug="true" />
        <pages /></system.web>
    <system.webServer>
        <defaultDocument>
            <files>
                <add value="index.aspx" />
            </files>
        </defaultDocument>
    </system.webServer>
</configuration>

Ответы [ 2 ]

2 голосов
/ 24 января 2012

Кажется, отсутствует раздел authorization (?). Вы должны иметь что-то вроде

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

Без информации о необходимом уровне авторизации (запрет анонимных пользователей) сервер приложений пропустит всех куда угодно.

1 голос
/ 24 января 2012

Поместите это под <cofiguraation> основной тег, например:

<configuration>
 <location path="~/RestrictedFolder">
  <system.web>
  <authorization>
    <deny users="?"/>
  </authorization>
  </system.web>
 </location>
....

если вы ограничиваете определенные файлы, выполните:

<location path="~/securedpage.aspx">
  <system.web>
  <authorization>
    <deny users="?"/>
  </authorization>
 </system.web>
</location>

Выполните эти изменения в файле web.config в развернутом проекте

В качестве альтернативы Wiktor предложил использовать для блокировки анонимного доступа к сайту в целом

поместите его под <system.web> возможно до или после тега <authentication>

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

Или создайте папку в корневом каталоге вашего проекта и поместите защищенные страницы в эту папку. R-щелкните по папке add new web.config file и поместите следующее под <system.web> tag

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