Login system, check om bruger/pass er rigtigt

Tags:    java mysql

Hej

Har lidt problemer med lidt kode, som jeg håber i evt. kunne hjælpe med. Er igang med et login system hvor 2 brugere skal kunne logge ind.

De skriver navn og password, hvor den går ind og henter data fra en database (tabel). Det navn de har skrevet ind, skal så være det samme som det navn fra tabellen.

Indtil videre udskriver jeg i tostring i linje 43, fx Mikkel mikkel123 administrator som en string.

Hvordan plukker jeg fx kun Mikkel ud fra den string eller hvordan skal jeg takle dette problem :(?

Har min klasse her: http://pastebin.com/LD1DCsaY



Håber en kan give/hjælpe lidt.



7 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Forstår ikke helt hvorfor de skal skrive dit navn, et brugernavn og et kodeord, for at logge ind, men det er vel også lige meget.

For at 'splitte' en streng, kan du benytte metoden split(String regex) fra String klassen.

Desuden vil jeg anbefale dig at læse mere om JDBC, da jeg ud fra din kode ikke helt forstår hvorfor du ikke bare får navnet ud fra det resultset som du får fra din SQL? - Har bl.a. skrevet lidt om Java og databaser her

---

Og lad mig give dig et godt råd.... Når du laver variabler, så lad være med at kalde dem x, p, da, y osv... De navne giver ingen mening for andre mennesker, der ikke kender din kode



Indlæg senest redigeret d. 06.10.2013 16:59 af Bruger #4487
Har bare lavet det med navn og password til at starte med. Det bliver helt sikkert noget brugerlogin (tal), noget som er unikt samt et password. (Hashcode)? :P

Altså, hvis jeg skal uddybe mig lidt bedre er jeg igang med et projekt, hvor vi skal bruge et login system som jeg sidder og fifler lidt med! Er ikke den store kode haj.

Der skal tilgå data fra en tabel (mysql) hvor vi fx har:

Brugernavn, adgangskode og position som et eksempel kan være:
Martin, martin123 og Administrator.

Systemet som skal logge på har 2 aktører, en salgsassistent og en butikschef (administrator)

Disse skal have forskellige rettigheder, som vi vil give igennem login systemet.

Havde tænkt på man skulle vælge om man var butikchef eller salgsassistent, hvorpå man skriver brugernavn og password. Den skal så tjekke op med databasen om personen rent faktisk er salgsassistent, så de rigtige rettigheder gives ud :)

Ved ikke om jeg har gjort det svært for mig selv, kodemæssigt



Først og fremmest skal du sætte dig godt ind i JDBC principperne, da dette er Javas måde at kommunikerer med databaser på.

Med JDBC kan du så udfører SQL statements, som herefter giver dig nogle data tilbage (alt afhængig af dit SQL statement). Dette kaldes i JDBC et resultset.

resultsettet kan du så køre igennem og du kan så gemme de data du fik fra din tabel i et almindeligt Java objekt, som har objekt variabler der indeholder f.eks. brugernavn, og positionen.

Hvis jeg f.eks. logger ind med brugeren

test / test

Jeg sender så følgende forespørgsel afsted via JDBC
Fold kodeboks ind/udSQL kode 


Herefter får jeg et resultset tilbage... Dette resultset kan jeg så køre igennem en løkke, og hive alle de forskellige rækkers data ud. Når jeg hiver dem ud kan jeg samtidig gemme dem i en almindelig java klasse, der kan indeholde en brugers brugernavn og position.



Problemet er med det resultSet, at jeg jo ikke connecter til databasen i min login klasse?

Hvordan kan jeg lave et resultSet i login klassen? bliver den ikke gemt i den klasse metoderne står i? altså de der executeUpdate osv

Min dataAccess klasse (en klasse vi har fået udleveret af vores lærer) ser således ud:

http://pastebin.com/tLnqmBib

Den har de 2 metoder jeg kan tilgå når jeg skal hive data ned eller opdatere.

Som du kan se bliver det gemt i en dobblt array objekt.



Indlæg senest redigeret d. 06.10.2013 17:31 af Bruger #17615
Jamen så hiver du vel bare dit data ud fra dit to-dimensionelle array?

Umiddelbart ser det ud som om at data hentet fra databasen bliver lagt i det flerdimensionelle array, som returnes fra metoden. SÅ skal der vel være brugerens position o.lign i dette. Det to-dimensionelle array er i dette tilfælde formentlig dit "restultset" :)



Indlæg senest redigeret d. 06.10.2013 19:02 af Bruger #4487
Yes, det er jeg med på. Det er dog her jeg er gået i stå. Jeg kan fint checke om name er det samme som det navn fra tabellen. Gøres sådan:

if (name.equals(d)) {
System.out.println("Name is good");
}

Jeg har jo den variable d som er mit ResultSet. Skal have den til at tjekke alle 3, altså om navn, password og position er "true".

Dvs hvis jeg logger ind med Martin som brugerlogin og martin123 som password og jeg fx er gået igennem en administrator loginport skal alle 3 være true før login kan gennemføres.

Lige nu har jeg skrevet dette som måske vil løse det.

if (password.equals(d))
{
System.out.println("password is good !\n----");
}
else if (name.equals(d)) {
System.out.println("Name is good");
}
else if (position.equals(d))
{
System.out.println("position is good");
}
else
{
System.out.println("Hvad er der galt");

Der kommer selvfølgelig til at stå noget andet, end det der lige er skrevet til aktørerne :), altså fx "Name is good".
}

Er det den rigtige måde at tjekke alle 3 på samme tid? mht position, skal man ikke ind og skrive administrator, men man skal angive man er administrator inden man logger ind tænker jeg lidt.

På den måde vil jeg nok håndtere mine rettigheder i systemet.



Indlæg senest redigeret d. 07.10.2013 08:21 af Bruger #17615
Har du tjekket http://www.udvikleren.dk/forum/40360/login-system-spoergsmaal-kode/ din anden tråd om det samme går jeg ud fra.

Der er der en løsning der virker selvom den ikke er elegant. Har heller ikke brugt lang tid på det.

Med hensyn til din administrator, hvorfor laver du ikke et felt i din DB der angiver om han er admin eller ej? I stedet for at verificere det igennem en port, samt level.

F.eks.
0 = normal bruger.
1 = admin bruger.
2 = admin øvet.
3 = super admin.

Og tildele rettigheder derefter.
Dog har jeg ingen ide om hvordan et "rigtigt" login system administrere rettigheder.



t