Avatar billede larsliin Nybegynder
29. maj 2004 - 01:28 Der er 10 kommentarer og
1 løsning

fejl i login

Først og fremmest skal det nok lige siges, at jeg er absolut newbie indenfor asp.net - og nu mit spørgsmål:

Skal lave et login, og da det ikke er muligt for mig at lave det fra bunden, har jeg fundet et simpelt login, som jeg arbejder ud fra. Til min store overraskelse er der en fejl i koden, som jeg ikke kan gennemskue.
Efter at have skrevet sit brugernavn korrekt, behøver man ikke nødvendigvis skrive sit password korrekt, hvilket jo nok må siges at være en sikkerhedsbrist af uoverskuelige dimensioner!
Kan nogen hjælpe mig med, at gennemskue fejlen?

På forhånd tak.
Se evt. fil+db hér:
http://www.larsliin.dk/login.zip
Avatar billede larsliin Nybegynder
29. maj 2004 - 01:29 #1
ups! Glemte koden!!

void user(string tjekuser)
    {
    //opret en streng med driver/provider og sti til databasen
    string strConnection= "Provider= Microsoft.Jet.OleDB.4.0;";
    strConnection+= @"Data Source=" + Server.MapPath("db_login.mdb");

    //opret en streng med sql-forspørgsel
    string strSQL= "SELECT * FROM loginuser WHERE username='" + tjekuser +"'";

    //Opret en tom variabel til udtrækket
    string strResultHolder= "";

    //opret et objekt af typen OleDbConnection til databasen
    //objektet ligger i System.Data.OleDb
    OleDbConnection objConnection= new OleDbConnection(strConnection);

    //opret et objekt der udfører databaseudtrækket og gem det
    //i variablen objCommand
    OleDbCommand objCommand= new OleDbCommand(strSQL, objConnection);

    //forbered en variabel af typen OleDbDataReader
    //til at gemme udtrækket i inden det udskrives
    OleDbDataReader objDataReader= null;

    //tjekker om der er nogele fejl når forbindelsen åbnes
        try
    {
        objConnection.Open();

        //eksekverer databaseudtrækket
        objDataReader= objCommand.ExecuteReader();

        while(objDataReader.Read() == true){
            strResultHolder+= objDataReader[0];
            strResultHolder+= objDataReader[1];
    }

        if (strResultHolder.Length > 0)
        {
          Label4.Text= "yes!";
          Session["logon"]= "ok";
        }
        else
        {
          Session.Abandon();
        }

        udskrift.InnerHtml= strResultHolder;
        objConnection.Close();
    }
    //er der "kastet" en fejl, så udskriv den
    catch (Exception e)
    {
        Label1.Text= "Connection failed to open!";
        Label2.Text= e.ToString();
    }
}

void tjekLogin()
{
    string username= unTextBox.Text;
    user(username);
    loginLabel.Text= "";
}


void Page_Load(object sender, EventArgs e) {

tjekLogin();
    if (Session["logon"] == "ok")
    {
    loginLabel.Text= "Logon";
    }
    else
    {
      loginLabel.Text= "Logof";
    }
}

void Button1_Click(object sender, EventArgs e) {
tjekLogin();
}
Avatar billede jakobg Nybegynder
29. maj 2004 - 11:10 #2
Prøv at kigge lidt på .NETs indbyggede authentication rutiner, det kan sjældent betale sig at lave noget selv.

http://samples.gotdotnet.com/quickstart/aspplus/default.aspx?url=/quickstart/aspplus/doc/formsauth.aspx
http://samples.gotdotnet.com/quickstart/aspplus/default.aspx?url=/quickstart/aspplus/doc/formsauth.aspx
http://www.googol.dk/articles.aspx?id=5

Du skal dybest set bare pille lidt i web.config og lave en meget simpel login-side, så er du kørende.

Prøv at kigge lidt på det, det er slet ikke så kompliceret som det måske lyder til. Og hvis du stadigvæk er helt blank, kan jeg lave et eksempel til dig... :)
Avatar billede larsliin Nybegynder
29. maj 2004 - 13:28 #3
Ok! At bruge en web.config fil er åbentbart måden at gøre det på. Jeg har tidligere kigget på det, men havde problemer med at bruge mit stylesheet i forbindelse med login-siden, når jeg brugte denne metode.
Er det noget du kender noget til?
Avatar billede jakobg Nybegynder
29. maj 2004 - 17:25 #4
Med mindre dit stylesheet var en aspx-side, burde der ikke være de store problemer med denne metode. Men måske skal du give explicit adgang til stylesheet'et, så det ikke kræver login?
Avatar billede larsliin Nybegynder
30. maj 2004 - 15:26 #5
Ja, selvfølgelig! Havde ikke lige tænkt på det.

Lige en sidste ting:
Når jeg laver mit login på denne måde, laver jeg også en mulighed for at 'oprette ny bruger'. Dog får jeg en fejl, når jeg laver en validering på denne side. Fejlen består af en alert med følgende besked: 'Unable to find script library '/aspnet_client/system_web/1_1_4322/WebUIValidation.js'.

Har søgt på Google, men har svært ved at blive klogere på det. Har du en løsning?
Avatar billede jakobg Nybegynder
31. maj 2004 - 14:07 #6
Du skal formentlig køre regiis på din server...
Avatar billede larsliin Nybegynder
31. maj 2004 - 14:46 #7
Har prøvet .. uden held!
Avatar billede jakobg Nybegynder
31. maj 2004 - 16:55 #8
Kør 'aspnet_regiis -c' fra commandprompten...
Avatar billede larsliin Nybegynder
31. maj 2004 - 19:24 #9
hmm .. hjælper ikke, må droppe min validering indtil videre;-)
Læg et svar, så du ka' få point.

Tak for hjælpen, jakobg.
Avatar billede jakobg Nybegynder
31. maj 2004 - 21:13 #10
Det var så lidt, jeg håber du finder ud af det... :)
Avatar billede larsliin Nybegynder
31. maj 2004 - 21:46 #11
Løste faktisk problemet:
Jeg kopierede directory 'aspnet_client/system_web/1_1_4322/WebUIValidation.js' over i roden af min server, mere skulle der ikke til!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester