Web.config разрешает доступ к местоположению для определенного пользователя

У меня есть веб-сервер, с которого пользователи могут загружать файлы, специфичные для каждого пользователя. Чтобы быть уверенным, что каждый пользователь может загружать только свои файлы, они должны пройти аутентификацию черезBasic-аутентификации, Таким образом, для каждого пользователя на сервере есть учетная запись windows, которая имеет права на чтение определенной папки пользователя.

Теперь я хочу перенести эту функциональность на другой сервер. Я не хочу создавать учетные записи Windows для пользователей, но все еще сохраняю базовую аутентификацию. Поэтому я используюПользовательский модуль базовой аутентификации HTTP в сочетании сCustom MembershipProvider это позволяет мне определять пользователей в web.config.

Аутентификация работает довольно хорошо, но после входа в систему либоjack или жеjill (см. web.config) Я могу получить доступ к обоим местамDir1 а такжеDir2, Это также тот случай, если я закомментирую<allow users="jack" /> участие в тегах местоположения.

Дополнительная информация: я создал файл Default.aspx и добавил

<% Response.Write(HTTPContext.Current.User.Identity.Name) %>

который возвращает правильное имя пользователя в зависимости от того, кто вошел в систему.

<% Response.Write(HTTPContext.Current.User.Identity.IsAuthenticated) %>

возвращает True.

Что я должен сделать это толькоjack может получить доступ (= скачать файлы с)Dir1 и толькоjill может получить доступ (= скачать файлы с)Dir2 а не наоборот?

РЕДАКТИРОВАТЬ: я пытался добавить файлы web.config для каждого подкаталога вместо тегов местоположения, как указано utkai - с тем же результатом. Каждый пользователь может получить доступ к любому каталогу.

Вот мой файл Web.config:

<configuration>
<system.webServer>
    <modules>
        <add name="CustomBasicAuthentication" type="LeastPrivilege.CustomBasicAuthentication.CustomBasicAuthenticationModule, LeastPrivilege.CustomBasicAuthenticationModule, Version=1.0.0.0, Culture=neutral, PublicKeyToken=F20DC168DFD54966"/>
    </modules>

    <security>
        <authentication>
            <customBasicAuthentication enabled="true" realm="TEST" providerName="AspNetWebConfigMembershipProvider" cachingEnabled="true" cachingDuration="15" requireSSL="false"/>
        </authentication>
        <authorization>
            <deny users="?" />
        </authorization>
    </security>
</system.webServer>

<system.web>
    <membership defaultProvider="AspNetWebConfigMembershipProvider">
        <providers>
            <add name="AspNetWebConfigMembershipProvider" type="LeastPrivilege.AspNetSecurity.Samples.WebConfigMembershipProvider, WebConfigMembershipProvider"/>
        </providers>
    </membership>

    <authentication mode="Forms">
        <forms>
            <credentials passwordFormat="Clear">
                <user name="jack" password="jack"/>
                <user name="jill" password="jill"/>
            </credentials>
        </forms>
    </authentication>

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

<location path="Dir1" allowOverride="false">
    <system.web>
        <authorization>
            <!-- <allow users="jack" /> -->
            <deny users="*" />
        </authorization> 
    </system.web>
</location>

<location path="Dir2"  allowOverride="false">
    <system.web>
        <authorization>
            <!-- <allow users="jill" /> -->
            <deny users="*" />
        </authorization> 
    </system.web>
</location>
</configuration>

Ответы на вопрос(5)

Ваш ответ на вопрос