Ajuda ASP.NET

0 Membros e 1 Visitante estão a ver este tópico.

Boas,

Eu estou a acabar (a meio vá  ::))  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.  :shifty:

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: [Seleccione]
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  ;D


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

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

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  :inde:).
E que tal estudares, pensares, fazer um bocado de trabalho de casa?
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...
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;
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.
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 :)

http://www.asp.net/general/videos/how-do-i-set-up-the-sql-membership-provider
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  :beer: