1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Login Em C#

Discussão em 'Web Development' iniciada por ButterflyEffect, 31 de Março de 2008. (Respostas: 6; Visualizações: 2872)

  1. ButterflyEffect

    ButterflyEffect Power Member

    Codigo no Login.aspx.cs

    SqlConnection
    mycon = newSqlConnection(System.Web.Configuration.WebConfigurationManager.ConnectionStrings["IGMConnectionString"].ConnectionString);
    SqlDataAdapter adapter = newSqlDataAdapter("SELECT cod_utilizador FROM utilizadores WHERE login LIKE '" + login.SelectedItem + "' AND password LIKE '" + password.Text + "'", mycon);
    DataSet dataset1 = newDataSet();
    mycon.Open();
    adapter.Fill(dataset1,
    "utilizadores");
    mycon.Close();
    if (dataset1.Tables["utilizadores"].Rows.Count > 0)
    {
    Session[
    "cod_utilizador"] = dataset1.Tables["utilizadores"].Rows[0][0].ToString();
    Response.Redirect(
    "Informacao.aspx");

    }
    else
    {
    //lblerro.Text = "Dados de acesso inválidos";
    }

    Codigo no master
    if (Session["id_utilizador"] == null)
    {
    for (int i = 1; i < 7; i++)
    Menu1.Items[0].ChildItems.RemoveAt(1);
    }
    else
    {
    Menu1.Visible =
    true;
    Menu1.Items[0].ChildItems.RemoveAt(0);
    }

    Este codigo funciona mas agora necessitava de criar ter perfis e atribuir permissoes como Faxo?
    cump
     
  2. ButterflyEffect

    ButterflyEffect Power Member

    Para faxer lougout
    protectedvoid LoginStatus1_LoggingOut(object sender, LoginCancelEventArgs e)
    {
    Session.Abandon();
    FormsAuthentication.SignOut();
    Response.Redirect(
    "Main.aspx");
    }

    Alem das permissoes e perfis, como faxo para estabelecer um tempo ate faxer lougout e obrigar a faxer novamente login????
     
  3. SkylineGTR

    SkylineGTR Power Member

    No ficheiro web.config do teu projecto, certamente configuraste a secção de autenticação, nesse caso definindo o modo como "Forms". Aí, tens um propriedade "timeout" que é o que tu pretendes.


    Algo como isto:

    Código:
    <system.web>
        <authentication mode="Forms">
          <forms name="ASPXFORMSAUTH" 
                 loginUrl="login.aspx" 
                 protection="All" 
                 [B][COLOR=Lime]timeout="30"[/COLOR][/B] 
                 path="/"/> 
        </authentication>
        <authorization>
          <deny users="?" />
        </authorization>
      </system.web>
    A propriedade timeout é em minutos.
     
  4. Tsunamy_boy

    Tsunamy_boy Banido

    Sugestão:
    Não uses o Like usa o '=' assim evitas SQLinjection, por exemplo se meteres % em cada caixa de texto(utilizador e pass) ele vai abrir a sessão para o primeiro utilizador que encontrar... axo eu, mas tenta e ve...
     
  5. NoMercy

    NoMercy Power Member

    'like' e '=' não fazem a mesma coisa. O 'like' serve para fazer um 'match' com um padrão e o '=' iguala o valor exacto.
    Não o usar o 'like' não resolve o problema de sqlinjection. Faz-se tão facilmente sqlinjection com 'like' como com '='. A melhor maneira de resolveres o problema de sqlinjection em .net é usares parametros, a menos que faças tu próprio um mecanismo para filtrar os valores que concatenas com o sql.
    Mas para alem do problema de sqlinjection que o ButterflyEffect tem no código:
    Código:
    ...
    "SELECT cod_utilizador FROM utilizadores WHERE login LIKE '" + login.SelectedItem + "' AND password LIKE '" + password.Text + "'"
    ...
    
    ainda há o problema de que tentar validar um login com 'like' desta forma é muito fácil de aldrabar. Basta passar '%' no login e na password para que esse sql faça sempre um match e assim retornar todas as linhas que encontrar na tabela utilizadores.


    Quanto a autenticação, podes começar por lêr isto:
    .net 1.0/1.1
    http://support.microsoft.com/kb/301240
    .net 2.0
    http://aspalliance.com/1619_Role_Based_Forms_Authentication_in_ASPNET_20
    http://msdn2.microsoft.com/en-us/library/aa480476.aspx
     
    Última edição: 2 de Abril de 2008
  6. ButterflyEffect

    ButterflyEffect Power Member

    em path="/" o k se coloca necessariamente?
    <deny users="?" /> e esta part fax o que msm?
     
  7. SkylineGTR

    SkylineGTR Power Member

    A path podes deixar estar como está.
    O "deny users = ?" vai bloquear o acesso aos utilizadores anónimos (não autenticados).
     

Partilhar esta Página