NUNCA MAIS PASSE RAIVA POR NÃO CONSEGUIR RESOLVER UM PROBLEMA COM O EXCEL - GARANTIDO!

UNIVERSIDADE DO VBA - Domine o VBA no Excel Criando Sistemas Completos - Passo a Passo - CLIQUE AQUI

Você está em: PrincipalArtigosNet : Loginperfilacesso001
Quer receber novidades e e-books gratuitos?

Login com Perfil de Acesso

Esta semana recebi um e-mail, onde um caro colega me pedia algumas dicas de como construir uma aplicação, onde o usuário efetua o login em um certo local do site, e é direcionado para uma página que contém um menu, e estas opções deste menu são baseadas no perfil de acesso deste usuário.

Então, acho que vale a pena mostrar hoje este tutorial.Veja os detalhes:

Abra o Visual Studio.Net e crie um novo projeto, com o nome que sugeri acima. Este projeto deverá ter pelo menos 2 arquivos, chamados, EfetuarLogin.aspx e Conteúdo.aspx:

Abra a página EfetuarLogin.aspx e insira os seguintes WebControls:

» TextBox – txtLogin

» TextBox – txtSenha

» Label - lblMensagem

» Button – btnAutenticar –Text=”Autenticar”

Esta página não precisa ser exatamente igual ao modelo acima, mas pelo menos, os WebControls e suas referências devem ser como foi descrito acima.

Agora abra o arquivo Conteúdo.aspx. É neste arquivo que deve aparecer o menu com as opções para cada usuário. Crie uma interface bem agradável. Eu irei criar apenas o básico, com o intuito de mostrar apenas as funcionalidades da aplicação.

Notem que eu dividi a página em três seções, um cabeçalho, um espaçamento lateral onde será montado o menu, e um espaçamento central que deverá aparecer o conteúdo.

No espaçamento lateral, insira um WebControl do tipo ListBox com o nome de lstMenu. É neste controle que aparecerão os itens disponíveis para cada usuário.

Se você preferir, pode utilizar outro controle, como o DataGrid, DataList, RadioButtonList...

Configure a propriedade AutoPostBack como True do ListBox.

Agora vamos dar uma pausa no Visual Studio, abrir o SQL Server e criar duas tabelas, de acordo com a imagem abaixo. Não esqueça de criar um banco de dados para o projeto. Eu chamei o meu banco de dados de TutoriaisDotNet

Cadastre alguns registros fictícios nas tabelas, conforme o exemplo abaixo:

TBUsuarios

Explicando o que fizemos acima:

Na tabela de usuários, além dos campos de autenticação, temos o campo chamado Grupo, que identifica o grupo que aquele usuário faz parte. Você pode criar sua própria identificação para os grupos, mas é melhor utilizar abreviações para poder ficar mais fácil escrever os grupos que acessam as páginas.

Na tabela de TBMenu o campo Nome exibe o nome da opção, o campo URL é a página na qual o usuário será redirecionado, e o campo Acesso possui o nome dos grupos separados por “;” de forma que uma página poderá ser acessada por um ou mais grupos de usuários.

Voltamos para o Visual Studio.Net, abra a página EfetuarLogin.aspx e crie a seguinte rotina de código. Lembrando que você deve importar o Namespace System.Data.SqlClient:

private void AutenticarUsuario()

            {

                  ///Cria o objeto de conexão.

                  SqlConnection sqlConn=new SqlConnection();

                  ///Indica a string de conexão(não esqueça de configurar)

                  sqlConn.ConnectionString="Initial Catalog=TutoriaisDotNet;Data source=Master;User id=Lano;pwd=1234";

                  ///Cria o objeto de comando para o banco de dados

                  SqlCommand sqlCmd=new SqlCommand();

                  ///Comando Sql que verifica a existência do Login e sua senha

                  sqlCmd.CommandText="Select Login,Grupo from TBUsuarios where Login='" + txtLogin.Text + "' and Senha='" + txtSenha.Text + "'";

                  ///Indica a conexão que executará o comando criado

                  sqlCmd.Connection=sqlConn;

                  ///Abre a conexão

                  sqlConn.Open();

                  ///Cria o leitor de dados baseado no comando criado

                  SqlDataReader sqlDr=sqlCmd.ExecuteReader(CommandBehavior.CloseConnection);

                  ///Verifica se o leitor leu algum registro

                  if (sqlDr.Read())

                  {

                ///Caso verdadeiro, ele cria as seções  para armazenar as configurações do usuário.

                Session["Login"]=txtLogin.Text;

                        Session["Grupo"]=sqlDr.GetValue(1).ToString();

                        ///Redireciona para a página de conteúdo

                        Response.Redirect("Conteudo.aspx");

                  }

                  else

                  {

                        ///Caso falso, mostra a mensagem de erro ao usuário

                        lblMensagem.Text="Login ou Senha inválidos!";

                  }

                  ///Fecha a conexão e retira o objeto da memória.

                  sqlConn.Close();

                  sqlConn.Dispose();

            }

Esta rotina deverá ser chamada no evento click do botão btnAutenticar:

private void btnAutenticar_Click(object sender, System.EventArgs e)

            {

                  AutenticarUsuario();

            }

Abra o arquivo Conteúdo.Aspx, importe o namespace System.Data.SqlClient e System.Data, e digite o seguinte código:

private void MontarMenu(string Acesso)

            {

                  ///Cria o objeto de conexão.

                  SqlConnection sqlConn=new SqlConnection();

                  ///Indica a string de conexão(não esqueça de configurar)

                  sqlConn.ConnectionString="Initial Catalog=TutoriaisDotNet;Data source=Master;User id=Lano;pwd=1234";

                  ///Cria o adaptador de dados com o comando sql baseado no grupo selecionado

                  SqlDataAdapter sqlAdp=new SqlDataAdapter("Select Nome,URL from TbMenu where Acesso Like '" + Acesso.Trim() + "%'",sqlConn);

                  ///Cria a tabela virtual que armazenará o menu

                  DataTable tbMenu=new DataTable();

                  ///preenche a tabela com os dados do Adapter

                  sqlAdp.Fill(tbMenu);

                  ///Indica o campo que aparecerá na frente do ListBox

                  lstMenu.DataTextField="Nome";

                  ///Indica a url como valor oculto para redicionar o usuário

                  lstMenu.DataValueField="URL";

                  ///Indica a fonte de dados do ListBox

                  lstMenu.DataSource=tbMenu;

                  ///Renderiza o controle

                  lstMenu.DataBind();

            }

Agora vamos fazer com que o ListBox redirecione para a o item selecionado. No evento SelectedIndexChanged do lstMenu, adicione o código a seguir:

private void lstMenu_SelectedIndexChanged(object sender, System.EventArgs e)

            {

                  ///Redireciona para a página selecionada

                  Response.Redirect(lstMenu.SelectedItem.Value.ToString());

            }

Lembrando que não criarei as outras páginas, isto ficará por conta de vocês.

Para concluir, chame a rotina MontarMenu no pageLoad da seguinte forma:

private void Page_Load(object sender, System.EventArgs e)

            {

                  if(!Page.IsPostBack)

                  {

                        MontarMenu(Session["Grupo"].ToString());

                  }

            }

Vamos aos testes:

Efetuando o Login incorretamente!

Efetuando o Login com o usuário José

Faça o teste com outros usuários!

Aqui termina mais um tutorial, dicas e sugestões para lanodecastro@hotmail.com

Abraços,

Lano de Castro

1 Visão geral do .NET Framework e do CLR
1 Comunicação .NET e VB 6.0 (com Visual Studio.NET 2005) - Parte I
1 Desenvolvendo aplicações Windows utilizando o VB.NET e o C# - Parte 1
1 Desenvolvendo aplicações Windows utilizando o VB.NET e o C# - Parte 2
1 Desenvolvendo aplicações Windows utilizando o VB.NET e o C# - Parte 3
1 Desenvolvendo aplicações Windows utilizando o VB.NET e o C# - Parte 4
1 Desenvolvendo aplicações Windows utilizando o VB.NET e o C# - Parte 5
1 VB: Menu Principal, Menu PopUp e Arquivos Texto
Visual Studio
1 ASP.NET 2.0 - Conhecendo o ObjectDataSource Control
1 Visual Web Developer - 2005 - Beta 2 - Introdução
1 ASP.NET 2.0 - Conhecendo o GridView
1 ASP.NET 2.0 - Utilizando o GridView e DetailsView
1 ASP.NET 2.0 - Conhecendo o ObjectDataSource Control - Parte 2
1 ASP.NET 2.0 - Utilizando o XmlDataSource
1 Envio de e-mail através de formulário web
1 ADO.NET 2.0 - Conhecendo as novidades parte 1
1 Série Visual Source Safe - Parte 1
1 Série Visual Source Safe - Parte 3
1 URL Indexável – Reescrever URL de uma forma amigável
1 Permissão de Página Utilizando Web.Config
1 Usando public interface
1 Trabalhando com o componente TabContainer
1 Adicionando Menu no DataGridView
ASP.NET
1 Conhecendo o ambiente integrado do WebMatrix
1 Desenvolvendo aplicações ASP.NET no WebMatrix - WebControls – Parte I
1 Desenvolvendo aplicações ASP.NET no WebMatrix - WebControls – Parte II
1 Desenvolvendo aplicações ASP.NET no WebMatrix - WebControls – Parte III
1 Acessando um banco de dados facilmente com ADO.Net e Datagrid
1 Desvendando os segredos do Dataset- Parte I
1 Construindo um Sistema de Publicação de Notícias – Parte 1
1 Construindo um Sistema de Publicação de Notícias – Parte 2
1 Construindo um Sistema de Publicação de Notícias – Parte 3
1 Construindo um Sistema de Publicação de Notícias – Parte 4
1 Construindo um Sistema de Publicação de Notícias – Parte 5
1 Login com Perfil de Acesso
1 Guest Book com XML - Parte 1
1 Guest Book com XML - Parte 2
1 Agendando Datas no Calendário com XML
1 Filtrando e Organizando Dados com o Controle DataView
1 Lista de Dados com Subitens – Parte 1
1 Lista de Dados com Subitens – Parte 2
1 Trabalhando com Arquivos e Diretórios – Parte 1
1 Trabalhando com Arquivos e Diretórios – Parte 2
1 Trabalhando com Arquivos e Diretórios – Parte 3
1 Sistema de Enquetes baseado em WebServices – Parte 1
1 Sistema de Enquetes baseado em WebServices – Parte 2
1 Sistema de Enquetes baseado em WebServices – Parte 3
1 Upload de Arquivos
1 Crie seu próprio código de verificação
1 Login e Senha com FormsAuthentication – Parte 1
1 Login e Senha com FormsAuthentication – Parte 2
1 Sistema de Enquetes baseado em WebServices – Parte 4
1 Sistema de Enquetes baseado em WebServices – Parte 5
1 Sistema de Enquetes baseado em WebServices – Parte 6