none
Retornar Session do DB SQL a Página RRS feed

  • Pergunta

  • Boa Noite...

    Estou desenvolvendo um projeto em asp.net com C# e sql....

    Eu criei uma area de cadastro de usuarios, mas não consigo fazer a sessão aparecer em outra página apos o usuario ter logado.

    Então, segue o codigo abaixo:

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data.SqlClient; namespace Teste

    { public partial class _default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void btnEntra_Click(object sender, EventArgs e) { string strConn = "Data Source = MEU-PC\\SQLEXPRESS; Initial Catalog = table; Integrated Security = true;"; SqlConnection con = new SqlConnection(strConn); string strConsulta = "SELECT Login FROM tblUsers WHERE Login = @Login AND Senha = @Senha"; SqlCommand cmd = new SqlCommand(strConsulta, con); SqlDataReader objDr; cmd.Parameters.Add(new SqlParameter("@Login", txtLogin.Text)); cmd.Parameters.Add(new SqlParameter("@Senha", txtPass.Text)); try { con.Open(); objDr = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection); if ((objDr.HasRows)) { Response.Redirect("~/Usuario/Acesso.aspx"); } else { Response.Redirect("default.aspx"); } } catch (SqlException ex) { throw ex; } } } }

    Com eu posso modificar este código, para retornar o usuario apos o login.

    Obrigado pela atenção.

    quarta-feira, 4 de abril de 2012 00:57

Respostas

  • Boa Tarde....

    Funcionou... Posi eu tive que colocar o comando while, para ler o meu SqlDataReader.

    Obrigado pela força.

    • Marcado como Resposta Rafael_100 sexta-feira, 6 de abril de 2012 17:19
    sexta-feira, 6 de abril de 2012 17:18

Todas as Respostas

  • Não sei se entede direito!

    Vc que criar uma Session?

    con.Open(); objDr = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection); if ((objDr.HasRows)) { Response.Redirect("~/Usuario/Acesso.aspx");

    Session["usuario"] = "o que vc quiser";

    } else { Response.Redirect("default.aspx");

    Session["usuario"] = "";

    }

    Dai esta disponível em todas as páginas.

    Se testar Session["usuario"] igual a "" ou mesmo null é porque expirou a session.


    Ninguém falou que seria fácil!

    quarta-feira, 4 de abril de 2012 03:28
  • Olá Rafael vou tentar te explicar o mais simples possivel beleza.

    Seguinte : Para criamos uma Session basta vc fazer assim.

                Session.Add("Nome da Session", "Nome qualquer"); /*  Aqui eu estou passando um nome qualquer */
                Session.Add("Nome da Session", e.CommandArgument); /*  aqui eu estou passando um ComandArgument */
                Session.Add("Nome da Session", e.CommandName.ToString()); /* Neste exemplo eu estou passando o ComandName */
                Session.Add("Nome da Session", ddl_segmento.SelectedItem.Text); /* Aqui um DropDownlist */

     Page.RegisterStartupScript("", "<script> popup('Analitico.aspx', '980', '500');</script>"); /* Aqui é onde vc ira colocar a sua pagina de destino */

    Na pagina de destino vc coloca assim para recuperar.

    (string)Session["Nome da Session"].ToString() /* Aqui vc esta recuperando o valor da session da pagina anterior.  */


    CASO A RESPOSTA TENHA AJUDADO FAVOR MARCAR COMO RESPONDIDA.

    quarta-feira, 4 de abril de 2012 13:05
  • Boa tarde...

    Eu tentei outro código, e ele me retornou o usuario logado....

    Mas tenho 2 registros em minha tabela, mas quando eu logo com o 2º registro ele aparece normal.

    Mas quando um logo com o 1º registro, ele aparece com o o 2º registro. Porque??

    Segue o Código:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data.SqlClient;
    namespace Ensinado_e_Aprendendo_com_Professor.Usuario
    {
        public partial class Usuario : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                string strConn = "Data Source = MEU-PC\\SQLEXPRESS; Initial Catalog = table; Integrated Security = true;";
                SqlConnection con = new SqlConnection(strConn);
                string strConsulta = "SELECT Login FROM tblUsers";
                SqlCommand cmd = new SqlCommand(strConsulta, con);
                con.Open();
                SqlDataReader r;
                r =  cmd.ExecuteReader();
                if (Session["Login"] == null)
                {
                    while (r.Read())
                    {
                        txtAc.Text = r["Login"].ToString();
                    }
                }
            }
        }
    }

    Como eu resolvo?

    OBS.: Este código é da página Usuario/Acesso.aspx, pois eu gostaria de retonar o registro em uma label.

    Obrigado pela atenção.


    • Editado Rafael_100 quarta-feira, 4 de abril de 2012 15:16
    quarta-feira, 4 de abril de 2012 15:14
  • A lógica é assim:

    1. entrou na página de login (load) limpa a Session["suaSession"] = ""
    2. Digitou a senha corretamente joga valor para Session["suaSession"] = seuUsuario
    3. Clicou em logout limpa a Session["suaSession"] = ""

    E em todas páginas ou namaster teste Session["suaSession"] = "" se sim redireciona para o login


    Ninguém falou que seria fácil!

    quarta-feira, 4 de abril de 2012 16:59
  • Boa tarde....

    Eu tentei fazer, mas não funcionou....

    Pois, segue um exemplo:

    Tenho a minha tblUsers, com o campo Usuario, em meu DB SQL...

    Eu gostaria, de saber se é possivel pegar este campo Usuario, e jogar na na pagina apos o usuario estiver logado, na pagina acesso.aspx.

    Outro exemplo:

    Usuario: Rafael

    Senha: 12345

    Aaparece como: Bem Vindo usuario: Rafael

    e quando ele faz o logoff, vai outro ex:

    Test:

    123.

    Bem Vindo Usuario: test.

    Eu sei que esta pergunta deve esta confusa....

    Obrigado pela atenção

    sexta-feira, 6 de abril de 2012 15:41
  • O que você descreveu acima é justamente o roteiro que lhe passei. É só implementar na lógica de vossa aplicação.

    Vou tentar ser mais claro, se possível:

    Na página login.aspx

    protected void Page_Load(object sender, EventArgs e)
    {
    	Session["Login"] = "";
    	
    	...
    	...
    	Busca informações do usuário no bd	
    	...
    	...
    	if ((objDr.HasRows))
    	{
    		Session["Login"] = r["Login"].ToString();
    		Response.Redirect("~/Usuario/Acesso.aspx");
    	}
    	else
    	{
    		Response.Redirect("login.aspx");
    	}
      
    }

    Na página acesso.aspx

    protected void Page_Load(object sender, EventArgs e)
    {
    	//Verifica a session esta carregada, se não redireciona para o login
    	if (Session["Login"] == "")
    	{
    		Response.Redirect("login.aspx");
    	}
    	
    	labelLogin.Text = "Olá: " + Session["Login"]
      
    }




    Ninguém falou que seria fácil!


    • Editado jothaz sexta-feira, 6 de abril de 2012 16:38
    sexta-feira, 6 de abril de 2012 16:36
  • Boa Tarde....

    Funcionou... Posi eu tive que colocar o comando while, para ler o meu SqlDataReader.

    Obrigado pela força.

    • Marcado como Resposta Rafael_100 sexta-feira, 6 de abril de 2012 17:19
    sexta-feira, 6 de abril de 2012 17:18