2012-01-24 5 views
0

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

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

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

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

Является ли эта проблема вызвана изменением местоположения? Каталог развития машины: C: \ Users \ Мегатрон \ 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> 
+1

Где правило authroization (правила доступа)? Если у вас их в Интернете.config в подпапке, проверьте наличие этих правил или иным образом разместите теги в ней. – Mubarek

+0

Правила, созданные с помощью инструмента администрирования веб-сайта ASP.NET (ссылка на вопрос). Затем я опубликовал веб-сайт, поэтому подпапка находится в папке InetPub веб-сервера. Роли авторизации не отображаются в webconfig на машине разработки, но все же она работает. Выше показан webconfig из машины разработки (рабочий) – HGomez90

+0

Конечно, это работает, потому что правило по умолчанию разрешает всем пользователям. Да, Инструмент администрирования веб-сайта (WAT) добавляет правила, и изменения, внесенные в web.config, должны быть разрешены при появлении запроса. или нажмите сохранить все на VS. – Mubarek

ответ

1

Put это под <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-щелкните папку добавить новый файл web.config и поместить следующее под <system.web> тегом

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

Заключительная часть была той, которая заработала. Создание нового web.config для защищенного каталога. благодаря – HGomez90

2

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

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

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

+1

Я думаю, что у него есть web.config в подпапке, и по его вопросу аутентификация работала до развертывания – Mubarek

+0

@nuux Да, это правильно. Он находится в папке inetpub, а затем внутри папки (Osqar) для этого конкретного проекта. На веб-сервере размещено множество веб-сайтов. Wiktor Zychla, я пробовал это решение, но поскольку я не использую элементы управления членством ASP.NET, это не будет иметь никакого эффекта. – HGomez90

+0

@Rupert: Я спросил, есть ли у вас еще один файл web.config в том же проекте. Если вы показываете, как иначе показываете нам полные теги webconfig, связанные с безопасностью. Еще одна вещь, правила, которые публикует Wiktor, должны использовать, используете ли вы членство или формы или окна. Вопрос в том, какие у вас правила в вашем проекте? Вы знаете, правила могут перезаписывать друг друга, если они не используются должным образом. – Mubarek

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