Ajuda ASP.NET

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:

[code] 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();
    }[/code] 

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 :stuck_out_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 :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.

Bem secalhar devia deixar o Link :slight_smile:

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: