Dev (Back & Front)ARTIGO

Permissão de página utilizando Web.Config

Olá, pessoal, quero 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 que 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"><br />      <forms loginUrl="/pagina.aspx" name="nome" timeout="20"/><br />    </authentication><br /><br />    <authorization><br />      <deny users="?"/><br />    </authorization>

Code 1.1

Explicação

 
Naprimeira 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<br />   <customErrors mode="On" defaultRedirect="manutencao/erro.htm"><br />      <error statusCode="403" redirect="manutencao/erro.htm"/><br />      <error statusCode="404" redirect="manutencao/404.htm"/><br />   </customErrors>

Explicação

Depois de negar todos os usuários em minha página, mesmo colocando a tag customErrors ativa 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"><br />    <system.web><br />      <authorization><br />        <allow users="*"></allow><br />      </authorization><br />    </system.web><br />  </location><br />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"><br />    <system.web><br />      <authorization><br />        <allow users="*"></allow><br />      </authorization><br />    </system.web><br />  </location><br /><br /><location path="pagina.aspx"><br />    <system.web><br />      <authorization><br />        <allow users="*"></allow><br />      </authorization><br />    </system.web><br />  </location>

Resumindo, em cada caso é necessário colocar uma nova location path para o diretório ou para as páginas com a permissão <allow users=*></allow>.

Bom, eu fico por aqui. Qualquer dúvida pode entrar em contato.

Com mais de 20 anos trabalhando no mercado de tecnologia. Mestre em Engenharia Elétrica voltada para o mundo mobile, com mais de 20 livros publicados e cerca de 700 artigos publicados com intuito de ajudar àqueles que querem aprender a programar (site, software, desktop, serviços, api e mobile). Site pessoal: https://www.mauriciojunior.net - MVP, MCAD, MCP Microsoft

Ver perfil