Desenvolvimento - ASP. NET

Construindo uma Área Restrita em aplicativos Web

Sempre que construímos uma aplicação Web, é muito comum criarmos áreas administrativas e restritas, onde os usuários poderão gerenciar o conteúdo das páginas, pedidos, clientes, entre muitas outras coisas. Neste artigo explicarei como fazermos para criarmos uma área restrita em sua aplicação.

por Israel Aéce



Sempre que construímos uma aplicação Web, é muito comum criarmos áreas administrativas e restritas, onde os usuários poderão gerenciar o conteúdo das páginas, pedidos, clientes, entre muitas outras coisas. Neste artigo explicarei como fazermos para criarmos uma área restrita em sua aplicação.

Devemos criar uma aplicação ASP.NET no Visual Studio. Inicialmente, criaremos uma pasta chamada "Administracao" onde ficaram contidas as páginas restritas. Dentro dela uma página "Default.aspx" e fora dela, devemos ter outro WebForm que será responsável para que usuário faça o Login. Esta página chamará "Login.aspx". A estrutura de arquivos de nosso projeto ficará algo como:



Depois disso, devemos informar qual será a página de "Start". Para isso informaremos que a página inicial será a "Default.aspx", dentro da pasta "Administracao". Explico: Quando a aplicação é iniciada, a página "Default.aspx" será chamada, ao chamá-la será verificado se o usuário corrente encontra-se ou não logado. Caso não esteja, ele será redirecionado para a página "Login.aspx", onde ele será obrigado à se autenticar.



Bem, antes de mais nada, devemos construir a página "Login.aspx", onde devemos ter o formulário para que o usuário possa digitar seu Login e Senha para se identificar. O formulário ficará da seguinte forma:



Em primeiro lugar, quando iniciamos a aplicação, reparem que ele requisitou a página "Default.aspx" dentro do diretório "Administracao". Como foi verificado que o Usuário não está logado, fui direcionado para a página de Login ("Login.aspx") e anexado na URL uma QueryString chamada "ReturnURL", que será a página que o usuário será redirecionado após efetuar a Login (caso seja válido). Outro ponto que gostaria de chamar a atenção é para o CheckBox "Lembrar". Ele serve para definirmos se o Cookie será ou não persistente, ou seja, se quando o usuário fechar o Browser e abri-lo novamente, já ficará ou não autenticado.

Antes de codificarmos o evento Click do botão de Login, vamos ver as configurações que devemos fazer no arquivo Web.Config:

Informamos no arquivo Web.Config a página que será efetuado o Login e também informamos que a pasta "Administração" será restrita. A partir disso o usuário deverá efetuar o Login antes de visualizar o conteúdo da pasta "Administracao".

Agora vamos criar uma tabela no SQL Server chamada "Administradores" onde armazenará o cadastro dos Administradores do Sistema. Depois de criada, no evento Click do Botão de Login, devemos ir até o SQL Server e verificar se esse usuário existe na Base de Dados. Caso positivo, ele será redirecionado para a página que encontra-se na QueryString "ReturnURL", caso contrário, não podemos permitir o acesso.

A Tabela Administradores terá apenas o seguintes campos: Nome (Varchar(50)), Login(Varchar(10)) e Senha(Varchar(6)). E o evento Click ficará da seguinte forma:

Como podem ver, em primeiro lugar importamos os Namespaces necessários, no caso: System.Data.SqlClient e System.Web.Security. Depois, abrimos conexão com a Base de Dados e através de uma query, passamos como parâmetros o Login e Senha, verificamos se existe algum registro que atenda à essa condição. Caso exista, o usuário é redirecionado para a página "Default.aspx" dentro da pasta "Administracao", caso contrário uma mensagem será exibida para ele, informando que o acesso foi negado. Lembrando que o CheckBox é passado como o segundo parâmetro para a Sub RedirectFromLoginPage (Linha 31), informando se é ou não para manter o Cookie persistente.

Importante: Não há necessidade de nos preocuparmos em tratarmos os apóstrofos """ e ponto-e-vírgula ";" para aqueles que tentarem a "SQL Injection", pois quando trabalhamos com Parameters, eles ficam encarregados de tratarem isso automaticamente.

Depois de validado, somos direcionados para a página requisitada anteriormente. Veja abaixo:



Como passamos para a Sub RedirectFromLoginPage o Login do Usuário (Linha 30 do Código 2), é possível recuperarmos isso durante a sua sessão. Para isso pode fazer:

O que nos restou agora é fazermos o "Logout" do Usuário. Para isso, utilizaremos o LinkButton "Logout" e assim, ao clicar, a sessão do usuário será finalizada. Veja o exemplo abaixo:

Utilizamos a Sub SignOut da classe FormsAuthentication para finalizar a sessão do Usuário, e assim ele será novamente redirecionado para a página de Login ("Login.aspx").

CONCLUSÃO: Com o ASP.NET a segurança em nossas aplicações Web ficaram bem mais fáceis de serem implementadas e bem mais seguras. Este artigo explica a parte superficial. Há muitas "features" que possam ser utilizadas para garantirmos o máximo de segurança possível, mas é claro que tudo dependerá de cada Aplicação.

Israel Aéce

Israel Aéce - Especialista em tecnologias de desenvolvimento Microsoft, atua como desenvolvedor de aplicações para o mercado financeiro utilizando a plataforma .NET. Como instrutor Microsoft, leciona sobre o desenvolvimento de aplicações .NET. É palestrante em diversos eventos Microsoft no Brasil e autor de diversos artigos que podem ser lidos a partir de seu site http://www.israelaece.com/. Possui as seguintes credenciais: MVP (Connected System Developer), MCP, MCAD, MCTS (Web, Windows, Distributed, ASP.NET 3.5, ADO.NET 3.5, Windows Forms 3.5 e WCF), MCPD (Web, Windows, Enterprise, ASP.NET 3.5 e Windows 3.5) e MCT.