Avatar billede strikerdk Novice
14. november 2008 - 12:35 Der er 5 kommentarer og
1 løsning

Bedste bud på brugerlogin?

Hej Eksperter.

Jeg har en webapplikation, hvor der kan tilknyttes brugere og administratorer via et administrationspanel.

Information...
Udviklingsmiljø: .NET 3.5 / Visual studio 2008
Database: Access
Programmeringssprog: C#

I administrationspanelet oprettes der brugere med brugernavn, password, brugergrupper(admin eller bruger), som skrives direkte til en tabel i accessdatabasen.

Denne webapplikation skal deles op, så dem der er oprettet som administratorer kan tilgå administrationspanelet, og hver bruger har sit eget "spot" på websitet. Brugerne har altså hver sin side de skal have adgang til, men det skal ikke være muligt for dem at se hinandens "spot". Spottet er egentlig bare en side, som viser forskellige info afhængig af hvilken bruger de er logget ind.

I mine øjne må det jo betyde, at hvis en bruger logger ind på websitet, skal det vel være sådan at loginét validerer op mod accessdatabasen, for at finde ud af hvilken bruger det er, og om det er en bruger eller en administrator.

Jeg ved bare ikke helt hvordan det skal gøres, da jeg ikke tidligere har prøvet dette.

I brugertabellen er der selvf. et unikt ID for de oprettede.

Er der nogen der har et godt forslag til hvordan dette skal gøres, og gerne med en uddybende forklaring. (Derfor alle pointene).

På forhånd tak. :)
Avatar billede keysersoze Guru
14. november 2008 - 15:46 #1
det er muligt jo - men der er allerede indbygget kontroller osv i .NET til både bruger- og rollestyring så du vil få en masse funktionalitet foræret ved at bruge det. Kig efter Membership på nettet - se fx http://odetocode.com/Articles/427.aspx
Avatar billede strikerdk Novice
14. november 2008 - 16:05 #2
Jeg har læst en del om den indbyggede brugerting der er i .NET (VS).
Jeg glemte nok lige at nævne, at jeg gerne vil have det styret fra koden hvis det er muligt - og evt. uden brug af querystring. Jeg har ladet mig høre at sessions ikke er at foretrække i forbindelse med brugerstyrring.

Jeg har siden jeg postede dette, kommet et stykke med koden til at validere op mod access databasen - men får desværre denne fejl:

Specified cast is not valid.

Line 64:                  while (readData.Read())
Line 65:                  {
Line 66:                      tempUid = readData.GetString(0);
Line 67:                      tempPwd = readData.GetString(1);
Line 68:                  }


Kode her:

protected void btnValidateUser_Click(object sender, EventArgs e)
    {
        bool IsValidUser = false;

        IsValidUser = ChechIfUserExist(Brugernavn.Text, Passkode.Text);

        if (IsValidUser)
        {
            fejl.Text = "Du er logget ind!";
            //Procced to next level
        }

        else
        {
            fejl.Text = "Du er IKKE logget ind!";
            //Abort or re-enter username and password
        }


    }

    protected static bool ChechIfUserExist(string ReadBrugernavn, string ReadPasskode)
    {
        string DBConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|eksempel.mdb;User Id=;Password=";
       
        string strSQL = "SELECT count(*) FROM BrugerTabel WHERE Brugernavn = @strBrugernavn AND Passkode = @strPasskode";

        string tempUid = null, tempPwd = null;

        using (OleDbConnection conn = new OleDbConnection(DBConnection))
        {
            using (OleDbCommand oledbcmd = new OleDbCommand(strSQL, conn))
            {
                conn.Open();

                oledbcmd.Parameters.Add(new OleDbParameter("@Uid", ReadBrugernavn));
                oledbcmd.Parameters.Add(new OleDbParameter("@Pwd", ReadPasskode));
                OleDbDataReader readData = oledbcmd.ExecuteReader();

                while (readData.Read())
                {
                    tempUid = readData.GetString(0);
                    tempPwd = readData.GetString(1);
                }
                readData.Close();
                conn.Close();
            }
        }
        if (!string.IsNullOrEmpty(tempUid) && (!string.IsNullOrEmpty(tempPwd)))
        {
            return true; //Valid User           
        }
        else
        {
            return false;//Invalid User
        }
    }
Avatar billede strikerdk Novice
14. november 2008 - 16:14 #3
Hmm - jeg burde nok have oprettet spørgsmålet lidt anderledes. Jeg lukker her og opretter et nyt. smid lige et svar keysersoze
Avatar billede keysersoze Guru
14. november 2008 - 16:20 #4
"gerne vil have det styret fra koden" - det er jo netop det membership-provideren giver dig mulighed for? I stedet for selv at have fx en ChechIfUserExist-metode har provideren allerede det indbygget.

Der benyttes heller ikke querystrings til noget som standard - du burde endda kunne sætte det op så der hverken benyttes sessions eller querystrings (globalt på din applikation) men det betyder dog stadig en bruger-token kode i din adresse.
Avatar billede strikerdk Novice
14. november 2008 - 16:39 #5
Ja okay - måske jeg skulle give mig i kast med det alligevel - jeg har læst en del om det, men har ikke haft modet til at gå igang med det endnu. :-)

Jeg vil dog gerne have svar på ovenstående alligevel :-)

Vil du smide et svar?

Nyt spørgsmål findes her:

http://www.eksperten.dk/spm/852842
Avatar billede keysersoze Guru
15. november 2008 - 00:19 #6
så lægger jeg da et svar :)
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
Kurser inden for grundlæggende programmering

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