Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Flávio Milan

[Resolvido] Problema Sistema de Login aspx C#

Recommended Posts

Bom dia amigos,

 

Sou novo no asp.net e estou criando uma intranet para a empresa onde trabalho

ja criei toda interface grafica e agora estou começando a fazer o código C#.

 

Utilizo o banco de dados Postgresql com Npgsql para se conectar.

O sistema de login funciona, o meu problema é repassar as variaveis adiante para

obter dados do cliente. Antigamente com PHP eu passava uma variavel via POST ou GET

fazia um while no banco de dados e armazenava todos os dados da tabela em variaveis

para mostrar o nome de usuario, data do ultimo login, e até permissões...

 

Como posso armazenar todos os dados da tabela usuarios em variaveis string em ASP.NET?

 

Segue o código das minhas paginas...

 

IntranetLogin.aspx

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using Npgsql;

public partial class loginIntranet : System.Web.UI.Page
{
   public void validaLogin_Click(object sender, EventArgs e)
   {
       string usuario = Convert.ToString(usuarioSistema.Value);
       string senha = Convert.ToString(senhaSistema.Value);

       string conexaoBancoDados = "Server=localhost;Port=5432;User id=postgres;Password=senha;Database=Intranet";
       NpgsqlConnection conexao = new NpgsqlConnection(conexaoBancoDados);

       try
       {
           conexao.Open();
           NpgsqlCommand validaUsuario = new NpgsqlCommand("SELECT * FROM usuarios_sistema where login_sistema='" +usuario + "' AND senha_sistema='" +senha + "'", conexao);
           NpgsqlDataReader dr = validaUsuario.ExecuteReader();

           if (dr.Read())
           {
               string dataAtual = DateTime.Today.ToString("dd/MM/yyyy");

               Session["nomeUsuario"] = Convert.ToString(usuario);

               NpgsqlDataAdapter atualizaDataLogin = new NpgsqlDataAdapter("UPDATE usuarios_sistema SET data_utlimoacesso='"+dataAtual+"' WHERE login_sistema='"+usuario+"' AND senha_sistema='"+senha+"';", conexao);
               Response.Redirect("Default.aspx");
           }
           else
           {
               usuarioInvalido.Text = Convert.ToString("Usuário ou Senha Inválida");
           }
       }
       finally
       {
           conexao.Close();
       }
   }


   protected void Page_Load(object sender, EventArgs e)
   {

   }
}

 

e Default.aspx

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using Npgsql;

public partial class _Default : System.Web.UI.Page
{
   protected void Page_Load(object sender, EventArgs e)
   {
       DataHora.Text = Convert.ToString(DateTime.Now);
       DataHoraUltimoAcesso.Text = Convert.ToString(DateTime.Now);

       String nomeSessao = Convert.ToString(Session["nomeUsuario"]);

       string conexaoBancoDados = "Server=localhost;Port=5432;User id=postgres;Password=senha;Database=Intranet";
       NpgsqlConnection conexao = new NpgsqlConnection(conexaoBancoDados);

       try
       {
           conexao.Open();
           string sql = "SELECT atualizacao, usuario_atualizacao, data_atualizacao, sistema_atualizacao FROM atualizacoes_sistema ORDER BY id_atualizacao DESC";
           NpgsqlDataAdapter da = new NpgsqlDataAdapter(sql, conexao);
           DataSet ds = new DataSet();
           da.Fill(ds, "atualizacoes_sistema");
           dgAtualizacoes.DataSource = ds.Tables["atualizacoes_sistema"].DefaultView;
           dgAtualizacoes.DataBind();
       }
       finally
       {
           conexao.Close();
       }
   }
}

 

Desde ja grato amigos. :joia:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Flávio tudo bom?

 

Analisei o seu código e tem alguns pontos a melhorar.

 

1º Ponto:

 

Se você tiver utilizando os controles HTMLControls está conversão é desnecessária porque o Value já é do tipo string.

 

string usuario = Convert.ToString(usuarioSistema.Value);

 

2º Ponto:

 

Você repete a mesma conversão de string para string o usuario que você declarou logo no inicio do metodo é uma string.

Session["nomeUsuario"] = Convert.ToString(usuario);

 

3º Ponto:

Você pode centralizar todo o acesso ao banco de dados em uma camada (Project Class Library) para facilitar a manutenção do seu código e mais legibilidade a ele. Pesquise no google sobre DAL (Data Acess Layer (Camada de Acesso a Dados)).

 

4º Ponto:

Este ponto aqui quando você já informar o usuario e senha na mesma query a pessoa poderá injetar um codigo em seu input text e acessar o seu sistema está tecnica é chamada de SQL Injection.

Para evitar este tipo de ataque ao seu sistema utilize os parametres do command.

NpgsqlCommand validaUsuario = new NpgsqlCommand("SELECT * FROM usuarios_sistema where login_sistema='" +usuario + "' AND senha_sistema='" +senha + "'", conexao);

 

Resposta a sua dúvida:

 

Primeiramente eu criaria um entidade (class) chamada Usuario contendo as propriedades que você quer da tabela de usuários.

Quando for efetuado o login de acesso e bem sucedido criaria uma instancia do objeto usuario e preencheria suas propriedade com informações do banco de dados e depois de preenchido colocaria ele dentro de uma sessão que estarai visível para toda a aplicação.

 

Irei fazer o exemplo de como popular o objeto usuario e suas propriedades.

 


public void validaLogin_Click(object sender, EventArgs e)
{
string conexaoBancoDados = "Server=localhost;Port=5432;User id=postgres;Password=senha;Database=Intranet";
NpgsqlConnection conexao = new NpgsqlConnection(conexaoBancoDados);

try
{
	conexao.Open();
	NpgsqlCommand validaUsuario = new NpgsqlCommand("SELECT * FROM usuarios_sistema where login_sistema='" +usuarioSistema.Value + "' AND senha_sistema='" + senhaSistema.Value+ "'", conexao);
	NpgsqlDataReader dr = validaUsuario.ExecuteReader();

	if (dr.Read())
	{
		Usuario usuario = new Usuario();
		usuario.Id = (int)dr["login_sistema"];
		usuario.Nome = dr["Nome"].ToString();
		usuario.Login = dr["login_sistema"].ToString();
		usuario.Ultimoacesso = DateTime.Now;

		Session["usuario"] = usuario;

		NpgsqlDataAdapter atualizaDataLogin = new NpgsqlDataAdapter("UPDATE usuarios_sistema SET data_utlimoacesso='"+dataAtual+"' WHERE login_sistema='"+usuario+"' AND senha_sistema='"+senha+"';", conexao);
		Response.Redirect("Default.aspx");
	}
	else
	{
		usuarioInvalido.Text = Convert.ToString("Usuário ou Senha Inválida");
	}
}
finally
{
	conexao.Close();
}
}

 

Acho que é só isto, qualquer coisa mande uma mensagem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigado!!!

 

Desculpe a demora... andei meio off :P

 

Muito obrigado pelas dicas, salvou minha pele...

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.