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
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