Wiki Sporting, a enciclopédia do Sporting Clube de Portugal

Forum SCP - A Comunidade do Sporting Clube de Portugal


Olá, Visitante. Por favor Entre ou Registe-se se ainda não for membro.
Maio 19, 2013, 05:12

Entrar com nome de utilizador, password e duração da sessão

Início Início  Ajuda Ajuda  Regras Regras  Pesquisa Pesquisa  Entrar Entrar  Registe-se Registe-se       Wiki Wiki  Links Links 
Fórum SCP - A Comunidade do Sporting Clube de Portugal Outros Assuntos Tecnologia, Informática e Jogos (Moderador: Angel Lion) Tópico:

Ajuda ASP.NET

0 Membros e 1 Visitante estão a ver este tópico.
Páginas: [1] Ir para o fundo Imprimir
Autor Tópico: Ajuda ASP.NET (Lida 394 vezes)

Ajuda ASP.NET , « em: Maio 13, 2010, 23:19 »



*
Juvenil

Mensagens: 940
Idade: 25
Localidade: Aveiro
Masculino


Boas,

Eu estou a acabar (a meio vá  Roll Eyes)  um projecto para a faculdade no âmbito da disciplina de BD (Base de Dados) e não percebo nada de ASP.NET, ou melhor tenho umas noções básicas.  Despercebido

Estou a fazer um site de "compra/venda" de software, onde utilizadores podem comprar, pedir caso não exista no sistema e adicionar software feito por eles.

O meu problema está na área de Login do site.

Eu utilizei umas daquelas "caixas" de login que estão disponíveis no Visual Studio e obtenho a entrada que corresponde ao username e password na tabela utilizadores (é onde está guardada a informação de todos os utilizadores registados no site)  presente na BD.

Para tal, utilizo o seguinte código:

Código:
protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
        {
           
            bool flag = false;
            string IDuser = null;
            string connString = WebConfigurationManager.ConnectionStrings["ProjectoBD_IHC"].ConnectionString;
            SqlConnection con = new SqlConnection(connString);
            con.Open();

            SqlCommand cmd = new SqlCommand();
            cmd.Connection = con;
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = "SELECT * FROM Utilizador WHERE Username = @username AND Password = @pass";
            cmd.Parameters.AddWithValue("@username", Login1.UserName.Trim());
            cmd.Parameters.AddWithValue("@pass", Login1.Password.Trim());           
            try
            {

                SqlDataReader reader = cmd.ExecuteReader();
               
                while (reader.Read())
                {
                    flag = true;
                    IDuser = reader["IDUtilizador"].ToString();
                }
               
            }
            catch (SqlException exc)
            {
            }

            if (flag == true)
            {
                e.Authenticated = true;
                Response.Redirect("Default.aspx?id ="+ IDuser);
            }
            else
            {
                e.Authenticated = false;
            }
            con.Close();
        }


Como podem ver, eu envio o id do utilizador que inciou a sessão como parâmetro para a página principal do site. Em cada página do site existe um link para a área do utilizador (caso tenha feito o login) ou para a página de login. Se o utilizador estiver com a sessão inciada torna-se visível um link para fazer logout. Para ter estas funcionalidades a funcionar, neste momento tenho de de enviar o ID novamente como parâmetro e fazer outra ligação à BD

O que eu pretendo é algo como existe aqui no fórum, em que eu  em qualquer parte tenha acesso a essas funcionalidades (área, logout, etc.)

Como é que eu a partir deste código, posso criar uma área de login como a que existe aqui no fórum ? 

Eu percebo muito pouco de ASP e aguardo ajuda de alguma alma caridosa que me consiga iluminar a carola.
Se tiverem alguma crítica a fazer ao código postado acima, força nisso  Grin


AHHHH, a programação é feita em C#.

Penso ter descrito todas as informações necessárias, caso tenham mais alguma dúvida é só perguntar  Tongue

Peço desculpa pelo post ser tão comprido, mas eu sou uma pessoa que necessita de muitas palavras para descrever o que pretendo (sou complicado  Indeciso).
Registado


Re: Ajuda ASP.NET , « Resposta #1 em: Maio 14, 2010, 07:31 »



*
Veterano

Mensagens: 7875
Localidade: S. M. Feira


E que tal estudares, pensares, fazer um bocado de trabalho de casa?
Registado
Re: Ajuda ASP.NET , « Resposta #2 em: Maio 14, 2010, 09:43 »



*

Mensagens: 3227


A pergunta que fazes está relacionada com a interface e não com o código que usas para fazeres o login (embora daquilo que me lembro de .NET eles nunca foram brilhantes a separar bem as águas).

Tens de criar um template para a tua página, onde reserves uma parte para a secção de login. Mais que isso já não te consigo dizer, que há uns 4 anos que abandonei o .Net...
Registado
Re: Ajuda ASP.NET , « Resposta #3 em: Maio 14, 2010, 10:22 »



*
Veterano

Condecorações:Melhor Avatar 2010Humorista 2009Humorista 2008


Mensagens: 10251
Idade: 36
Localidade: Amadora/Alfena
Masculino


Em vez de enviares o id do login por QueryString (que é o que na prática fazes quando o adicionas na URL do redirect), guarda-o na sessão através da instrução:

Session["Login"] = id;

Depois, tal como o wild oscar adiantou, em cada página terás que ter uma área para exibir a info sobre o login. Nesse controlo, colocas o gajo a ir buscar o id guardado em sessão:

string id = Session["Login"].ToString();

Depois na acção de Logout terás que limpar o valor guardado na sessão:

Session["Login"] = null;
Registado

#&%@-$€!!!
Re: Ajuda ASP.NET , « Resposta #4 em: Maio 14, 2010, 10:34 »



*
Iniciado

Mensagens: 442
Idade: 34
Localidade: Odivelas
Masculino


Boas.

Sendo o ambito bases de dados, a ideia não deve ser perderes muito tempo a codificar asp.net.

Assim sendo, as funcionalidades de autenticação, autorização, criação de users e perfis, vêm built-in no asp.net a partir da versão 2.0. Podes usar o controlo de Login para autenticares o teu user e usares um provider de autenticação já disponivel. Podes usar o controlo de Login View, para mostrar quem está autenticado no momento, etc. Em relação ao provider de autenticação sugiro que uses o SQLMembershipProvider.

Existem vários links na net sobre isto, mas faz uma pesquisa por "sqlmembershipprovider scott guthrie" que vais montes de informação.

Deixo-te aqui um link rápido, com um video de 9 minutos que te ensina a fazer tudo o que tu queres.

Boa sorte.
Registado
Re: Ajuda ASP.NET , « Resposta #5 em: Maio 14, 2010, 14:58 »



*
Iniciado

Mensagens: 442
Idade: 34
Localidade: Odivelas
Masculino


Boas.

Deixo-te aqui um link rápido, com um video de 9 minutos que te ensina a fazer tudo o que tu queres.

Boa sorte.

Bem secalhar devia deixar o Link Smiley

http://www.asp.net/general/videos/how-do-i-set-up-the-sql-membership-provider
Registado
Re: Ajuda ASP.NET , « Resposta #6 em: Maio 14, 2010, 19:37 »



*
Juvenil

Mensagens: 940
Idade: 25
Localidade: Aveiro
Masculino


Obrigadão  a todos.

Optei por utilizar uma variável de sessão (visto ser vista em todas as páginas do meu site) e faz exactamente o que eu pretendo. Fica aqui o meu obrigado ao ARMAS.

Tenho uma área de login numa Masterpage e vou ver qual o estado da varivel de sessão.

Agradeço mais uma vez a colaboração dos vários foristas  Brinde
Registado
Gosta deste tópico? Partilhe-o:
Páginas: [1] Ir para o topo Imprimir
Fórum SCP - A Comunidade do Sporting Clube de Portugal Outros Assuntos Tecnologia, Informática e Jogos (Moderador: Angel Lion) Tópico:

Ajuda ASP.NET

« tópico anterior seguinte »
Ir para:

Powered by SMF 1.1.18 | SMF © 2011, Simple Machines
Tema SMFone modificado por Avantix e Paracelsus.
Optimizado para o Mozilla Firefox na resolução 1024 x 768.
© 2004 - 2010 | Fórum SCP | Alguns Direitos Reservados
Fórum não-oficial do Sporting Clube de Portugal

Ajuda | | Sitemap | Política de Privacidade