Permissão de Página Utilizando Web.Config



    Ol√° pessoal, gostaria de mostrar neste artigo a facilidade que temos para dar permiss√£o em p√°ginas utilizando o arquivo de configura√ß√£o web.config.

Informa√ß√Ķes adicionais:
Ferramenta utilizada: Visual Studio.NET 2008 TS
Tipo de aplicativo: ASP.NET ou seja, tipo web
Framework: 3.5, inferior ou superior
Linguagem: Pode ser feito em qualquer linguagem de desenvolvimento como: C#.NET, VB.NET, J#.NET, COBOL.NET.

    Hoje em dia com a facilidade e utiliza√ß√£o da web (intranet e internet), existem programadores utilizando o desenvolvimento de sistemas web achando melhor do que fazer um sistema local. Existem alguns benef√≠cios e malef√≠cios; n√£o quero entrar nesse m√©rito neste momento.
    Portanto, √© necess√°rio ter usu√°rio e senha para entrar nestes aplicativos web, mantendo um certo n√≠vel de seguran√ßa. Algumas dicas podem ser vistas no site [ecodigo.com.br] caso necessite.
    O arquivo de configura√ß√£o hoje em dia √© important√≠ssimo para quem desenvolve algum tipo de aplicativo web. O usu√°rio depois que loga na aplica√ß√£o, tem direito de acessar algumas p√°ginas antes de logar n√£o teria direito.
    Para definir esse tipo de coisa, precisamos colocar essas p√°ginas / diret√≥rios no arquivo de configura√ß√£o liberando ou negando. Geralmente √© feito da seguinte forma: primeiro se nega tudo e depois vai liberando as p√°ginas ou diret√≥rios. Lembre-se que, quando se nega tudo, nem a p√°gina de erro ser√° acessada se der algum problema na aplica√ß√£o, o usu√°rio ter√° que logar para ir a p√°gina de erro.

Vamos ao código
   <authentication mode="Forms">
      <forms loginUrl="/pagina.aspx" name="nome" timeout="20"/>
    </authentication>



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

Explicação
    A primeira linha do c√≥digo, transformei o modo de autentica√ß√£o para forms, ou seja, dentro do meu aplicativo tem um formul√°rio respons√°vel por logar na aplica√ß√£o. Logo na segunda linha, indiquei a p√°gina, um nome e um tempo de expira√ß√£o depois que o mesmo fizer o login; isso tudo dentro de <authentication>.
    Dentro de <authorization>, a tag <deny> nega todos os usu√°rios que tente acessar qualquer p√°gina da aplica√ß√£o, ou seja, ao tentar acessar, o mesmo ser√° redirecionado automaticamente para a pagina.aspx indicada na tag <authentication>.

Code 1.2
   <customErrors mode="On" defaultRedirect="manutencao/erro.htm">
      <error statusCode="403" redirect="manutencao/erro.htm"/>
      <error statusCode="404" redirect="manutencao/404.htm"/>
   </customErrors>

Explicação
    Depois de negar todos os usu√°rios em minha p√°gina, mesmo colocando a tag customErrors ativo e indicando uma p√°gina, caso der algum tipo de erro na aplica√ß√£o, para acessar a p√°gina √© necess√°rio logar na aplica√ß√£o primeiro.

Liberar a Página / Diretório
    O pr√≥ximo passo √© liberar as p√°ginas ou diret√≥rios a fim de n√£o precisar logar para acessar qualquer p√°gina, isto √©, at√© a p√°gina de erro. Alguma p√°gina deve ser liberada na aplica√ß√£o. Code 1.3

<location path="diretorio">
    <system.web>
      <authorization>
        <allow users="*"></allow>
      </authorization>
    </system.web>
  </location>
Code 1.3

Explicação
    Esse c√≥digo deve estar dentro da tag <configuration>, geralmente localizada abaixo de <appSettings>. Coloquei no path da tag location o nome do diret√≥rio que preciso para permitir que acessem sem logar no aplicativo.
    Caso queira colocar um p√°gina, veja o c√≥digo 1.4.

<location path="diretorio">
    <system.web>
      <authorization>
        <allow users="*"></allow>
      </authorization>
    </system.web>
  </location>

<location path="pagina.aspx">
    <system.web>
      <authorization>
        <allow users="*"></allow>
      </authorization>
    </system.web>
  </location>

    Resumindo, em cada caso √© necess√°rio colocar uma nova location path para o diretorio ou para as p√°ginas com a permiss√£o <allow users=‚ÄĚ*‚ÄĚ></allow>.
Bom, eu fico por aqui. Qualquer d√ļvida pode entrar em contato.