web-dev-qa-db-fra.com

Spécifiez plus d'un répertoire dans l'élément Web.Config Location Path

Dans mon fichier de configuration Web ASP.NET, les éléments d'emplacement suivants sont définis:

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

  <location path="dir1">
    <system.web>
      <authorization>
        <allow users="?"/>
      </authorization>
    </system.web>
  </location>

  <location path="dir2">
    <system.web>
      <authorization>
        <allow users="?"/>
      </authorization>
    </system.web>
  </location>

L'exemple ci-dessus indique que tous les répertoires seront verrouillés par des utilisateurs anonymes, à l'exception des deux répertoires dir1 et dir2.

Je suis curieux de savoir s'il existe une syntaxe qui me permettrait de définir plusieurs répertoires dans un élément d'emplacement. Par exemple, ce serait pratique si nous pouvions faire quelque chose comme ça ...

  <location path="dir1,dir2,etc">
    <system.web>
      <authorization>
        <allow users="?"/>
      </authorization>
    </system.web>
  </location>
25
Jed

désolé, mais la propriété path ne permet pas d’utiliser "," Vous devez donc écrire une balise pour tous les chemins, Vous pouvez également créer web.config dans chaque répertoire.

14

Vous ne pouvez pas spécifier plusieurs éléments dans l'attribut path, mais vous pouvez utiliser l'attribut configSource.

Par exemple, le fichier web.config d'origine suivant:

<?xml version="1.0"?>
<configuration>
  <location path="form1.aspx">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>
  <location path="form2.aspx">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>
  <location path="form3.aspx">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>
  <location path="form4.aspx">
    <system.web>
      <authorization>
        <deny users="*"/>
      </authorization>
    </system.web>
  </location>
  <location path="form5.aspx">
    <system.web>
      <authorization>
        <deny users="*"/>
      </authorization>
    </system.web>
  </location>
  <location path="form6.aspx">
    <system.web>
      <authorization>
        <deny users="*"/>
      </authorization>
    </system.web>
  </location>
</configuration>

Peut être remplacé par les fichiers web.config, allow.config et deny.config équivalents suivants:

web.config

<?xml version="1.0"?>
<configuration>
  <location path="form1.aspx">
    <system.web>
      <authorization configSource="allow.config" />
    </system.web>
  </location>
  <location path="form2.aspx">
    <system.web>
      <authorization configSource="allow.config" />
    </system.web>
  </location>
  <location path="form3.aspx">
    <system.web>
      <authorization configSource="allow.config" />
    </system.web>
  </location>
  <location path="form4.aspx">
    <system.web>
      <authorization configSource="deny.config" />
    </system.web>
  </location>
  <location path="form5.aspx">
    <system.web>
      <authorization configSource="deny.config" />
    </system.web>
  </location>
  <location path="form6.aspx">
    <system.web>
      <authorization configSource="deny.config" />
    </system.web>
  </location>
</configuration>

allow.config

<?xml version="1.0"?>
<authorization>
  <allow users="*"/>
</authorization>

refuser.config

<?xml version="1.0"?>
<authorization>
  <deny users="*"/>
</authorization>

L’utilité de cette approche augmente avec l’augmentation du nombre de règles d’autorisation/refus dans chaque section.

39
Ryan Prechel

il est possible de définir le chemin d'accès à un dossier spécifique ..__ Par exemple, nous avons quelques pages aspx:

  • /data/pages/form1.aspx 
  • /data/pages/form2.aspx 
  • /data/pages/form3.aspx

En créant cette règle dans web.config:

<location path="data/pages">
    <system.webServer>
        <httpProtocol>
            <customHeaders>
                <remove name="X-Frame-Options" />
                <add name="X-Frame-Options" value="SAMEORIGIN" />
            </customHeaders>
        </httpProtocol>
    </system.webServer>
</location>

Toutes les ressources dans data/pages seront affectées.

0
aleha