Array
(
)

multiplos webconfig na aplicação

Felipe Moura
   - 05 jun 2006

Bom dia,

No meu projeto tenho a seguinte estrutura de diretórios

-projeto (Acesso público)
----imagens (DIRETÓRIO)
----site (DIRETÓRIO)
----Default.aspx (ARQUIVOS.ASPX)
----WebConfig (Arquivo de configuração)
----noticia (DIRETÓRIO de acessoso restrito)
--------WebConfig (Arquivo de configuração dentro da sub pasta notícias)
---------login.aspx (pagina de login aspx)
---------

Como a estrutura de diretórios acima mostra eu tenho dois arquivos webconfig no primeiro deles apenas consta a configuração da variavel de conecção e o segundo deles dento da pasta notícias que é uma pasta de acesso restrito que deve ser vailidado por login exite um aruiqvo webconfigo com a mesma configuração de string de conecção e as configurações de autenticação e permição <authentication> <autorization>.

Segundo que eu li em um livro e na internet as configurações de multiplos webconfigs são sobrepostas pelos que vão afastando-se da raiz sendo assim eu esperava, que o site interio fosse de acesso publico pois o primeiro webconfig esta aberto no que diz questão a permissão e que quando o usuario acessasse a pasta notícias ele depara-se com o login.aspx por todos os arquivos dentro desta pasta estarem projetegidos pela autenticação.

O problema é que da um erro quando tento usar dois webconfig, e eu não entendo o por que deste erro, quando eu uso o webconfigo com autenticação na raiz ele funciona quando eu movo ele para dentro de uma pasta do sistema e fico com dois da pau então eu não entendo como fazer para usar dois webconfig na mesma aplicação.

alguem sabe como?

Glebejr
   - 30 jun 2006

Olá amigo,

Já passei por este problema também.

É o seguinte, o seu arquivo web.config interno, deve conter apenas o tipo <authorization> a autenticação tem que ser feita fora. O arquivo só pode conter isso.

Detalhe: Se vc quer fazer o diretório notícias com outro tipo de autenticação (por ex: windows) vc vai ter que criar um outro diretório virtual (aplicação) para o diretório que vc quer a autenticação diferente da autenticação da aplicação.

Espero ter ajudado.

Cmattos
   - 05 jul 2006

Felipe,

Eu gostaria de examinar o conteúdo dos arquivos Web.config que você criou para poder ajudá-lo de maneira mais eficiente. Mas, para esclarecer o conceito de autorização do ASP.NET, de fato, você pode utilizar vários arquivos de configuração em pastas diferentes e especificar níveis de acesso diferentes também.

Quando você tem um cenário, onde uma página ou mesmo uma pasta inteira está contida por uma pasta de nível superior que está protegida, você deve utilizar o objeto LOCATION, veja:

<configuration xmlns=´http://schemas.microsoft.com/.NetConfiguration/v2.0´>

<!--Permissão de acesso para a pasta PROMO na seção COMERCIAL-->

<location path=´Comercial/Promo´ >

<system.web>

<authorization>

<allow users=´*´/>

</authorization>

</system.web>

</location>

<!--Permissão de acesso para o arquivo PUBLIC.ASPX na seção ARTIGOS-->

<location path=´Artigos/Public.aspx´ >

<system.web>

<authorization>

<allow users=´*´/>

</authorization>

</system.web>

</location>

<!--Configurações gerais do website-->

<system.web>

<!--Define tipo de autenticação utilizado pelo website e página para Login-->

<authentication mode=´Forms´>

<forms loginUrl=´/Default.aspx´></forms>

</authentication>

<!--Permite acesso apenas para usuários autenticados-->

<authorization>

<deny users=´?´ />

</authorization>

</system.web>

</configuration>

Você pode conferir essa dica no endereço: http://www.reator.eti.br/Tips.aspx