Gå til innhold

hente logginn-info fra database


Anbefalte innlegg

Jeg prøve få til en innloggingsfunksjon i vb.net hvor brukernavn og passord hentes fra en oracle-database.

 

jeg har koblet meg til databasen og jeg får lest og skrevet til den.

i innloggingsbildet har jeg to tekstfelter, txtUser og txtPass.

 

men jeg sliter med koden som skal være bak Logg inn-knappen.

 

Håper noen kan hjelpe meg.

Lenke til kommentar
Videoannonse
Annonse

Litt pseudokode:

dim dbUsername, dbPassword as string

dim txtUsername, txtPassword as string

 

on Loginknapp.Click

txtUsername = txtUser.Text

'gjør clean av txtUsername, der du tar vekk ting som ' og ", som kan brukes til SQL Insert etc. Du skriver de ikke til db akkurat her, men det er en grei ting å gjøre i alle tilfelle.

txtPassword = txtPassword.text

' gjør clean av denne også

 

if len(txtUser.Text) > 0 AND len(txtPassword.Text) > 0 then

if txtUser.Text = dbUsername AND txtPassword.Text = dbPassword then

' dette stemmer, og du kan gå videre

else

'gi feilmelding, gjerne uten å pinpointe akkurat hvilken av de som er feil.

end if

else

if len(txtUser.Text) = 0 then

'gi beskjed om at de må skrive inn brukernavn

elseif len(txtPassword.text) = 0 then

' gi beskjed om at de må skrive inn passord

end if

'generelt, ikke gå videre, gi tilbakemelding på hva som er galt

end if

 

Grei start, i hvertfall.

 

Kirikiri

Lenke til kommentar

Hvis du sørger for å ha kun unike brukernavn i basen din, så trenger du ikke noe særlig logikk i forhold til sjekking av passord i databasen.

 

Hent ut dbbrukernavn og dbpassord der dbbrukernavn = det som er tastet inn. Så kan du gjøre sjekk mot passord i .net-koden, og ikke i databasespørringen.

 

Når det gjelder lagring av passord, så er det et poeng å ikke lagre det i klartekst. Det du kan gjøre, er å kjøre MD5 hash-kryptering (innebygd i .NET) når du skriver passord til databasen. Så gjør du samme kryptering av det som er skrevet inn i innloggings-boksen. Hvis disse to er like, så er passordet det samme. "Ulempen" er at ikke kan gå inn i basen og sjekke hva som er passordet til en bruker som har glemt passordet sitt. Hvis de glemmer det, så må de få et nytt, og dette må legges inn i basen. I så fall så er jo moroa hvordan du skal gi dem det nye passordet, siden e-post ikke er helt bombesikkert. Men det er i hvertfall en mulighet.

 

Kirikiri

Lenke til kommentar

Eh, da høres det mer ut som et Oracle-query-problem enn et .NET-programmeringsproblem.

 

I T-SQL vil du kunne skrive inn noe sånn som

 

select userid from tblUsers where UserName like 'bjarne' and Password like '39plei'

 

Ikke sikker på hva som er syntaks i Oracle, men helt ulikt er det sikkert ikke.

 

Hvis du får tilbake en userid, så har du en match, hvis du ikke får tilbake en userid, så har du ingen match. Du kan også bruke Username i stedet for UserID, men i en virkelig database bør du ha en form for unik id på slike data som brukere, så du bør egentlig legge det til hvis du ikke har det.

 

Du får det til i .NET ved å lage en function som har UserName og PassWord som argumenter, og som returnerer UserID, som du videre kan lage logikk rundt. (If UserID > 0 then "OK" else "Feil" end if )

 

Kirikiri

Lenke til kommentar

får det nesten til....har foreløpig bare prøvd meg frem med brukernavn:

 

Dim row As DataRow

Dim username As String

Dim dbusername As String

username = txtUser.Text

 

 

If username = "" Then

MsgBox("Skriv inn brukernavn!")

Else

For Each row In DsPassord1.PASSORD.Rows

dbusername = (row(0))

If username <> dbusername Then

Else

MsgBox("Velkommen!")

End If

Next

End If

End Sub

 

 

Hvordan blir koden når jeg vil hente ut dbPassword fra databasen?

 

databasen består av tabellen PASSORD med attributtene Brukernavn og Passord.

 

Håper noen kan hjelpe.

Lenke til kommentar

TSQL er navnet på Microsoft type SQL-spørringer, så vet du det. Men syntaksen for spørringer er ganske lik i MS og Oracle, så spørringen burde fungere.

 

Kan jeg spørre om hvorfor dere skal legge dataene fra spørringen inn i en datagrid? Det er jo ikke som om det kommer mye data ut, hvis du bare skal sjekke om et passord stemmer eller ikke.

 

Kirikiri

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...