Kom ihåg mig?
Home Menu

Menu


User dataset i session eller cookie?

 
Ämnesverktyg Visningsalternativ
Oläst 2014-10-25, 11:23 #11
Nerix Nerix är inte uppkopplad
Flitig postare
 
Reg.datum: Oct 2010
Inlägg: 398
Nerix Nerix är inte uppkopplad
Flitig postare
 
Reg.datum: Oct 2010
Inlägg: 398
Vad är de för data som ska sparas ner? Användarrelaterad data sparas normalt i en databas och referensen till raden i en cookie/session. Vad händer annars när någon startar om servern och alla sessions försvinner med tillhörande data?
Nerix är inte uppkopplad   Svara med citatSvara med citat
Oläst 2014-10-25, 21:04 #12
naak2803 naak2803 är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jun 2011
Inlägg: 767
naak2803 naak2803 är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jun 2011
Inlägg: 767
Citat:
Ursprungligen postat av Nerix Visa inlägg
Vad är de för data som ska sparas ner? Användarrelaterad data sparas normalt i en databas och referensen till raden i en cookie/session. Vad händer annars när någon startar om servern och alla sessions försvinner med tillhörande data?
jo precis det är just det som jag har problem med.
startas servern om, så blir alla utloggade, så måste alla logga in igen på nytt för att erhålla nya sessioner.

Men om jag nu gör som du säger, dvs skapar en referenskolumn med en cookie som refererar till användarkolumnen i databasen. då gissar jag att den ska se ut på detta vis:

Kod:
dbo.CookieSession
id, sessionId, userId, dateCreate, dateExpire
1, 54h6j4jkj6tgghjh46ghj546, 1489, 2014-10-25, 2014-10-26
detta kommer ju anropa databasen för varje sida och varje reload. Eftersom jag presenterar ex. förnamn och efternamn på varje sida.

typ "inloggad som Johan Åselius" högst upp på sidan. och det är även sessionen som håller koll på fall användaren är inloggad eller inte.
naak2803 är inte uppkopplad   Svara med citatSvara med citat
Oläst 2014-10-25, 22:22 #13
Nerix Nerix är inte uppkopplad
Flitig postare
 
Reg.datum: Oct 2010
Inlägg: 398
Nerix Nerix är inte uppkopplad
Flitig postare
 
Reg.datum: Oct 2010
Inlägg: 398
Citat:
Ursprungligen postat av naak2803 Visa inlägg
jo precis det är just det som jag har problem med.
startas servern om, så blir alla utloggade, så måste alla logga in igen på nytt för att erhålla nya sessioner.

Men om jag nu gör som du säger, dvs skapar en referenskolumn med en cookie som refererar till användarkolumnen i databasen. då gissar jag att den ska se ut på detta vis:

Kod:
dbo.CookieSession
id, sessionId, userId, dateCreate, dateExpire
1, 54h6j4jkj6tgghjh46ghj546, 1489, 2014-10-25, 2014-10-26
detta kommer ju anropa databasen för varje sida och varje reload. Eftersom jag presenterar ex. förnamn och efternamn på varje sida.

typ "inloggad som Johan Åselius" högst upp på sidan. och det är även sessionen som håller koll på fall användaren är inloggad eller inte.
Spara ner id:t för användaren i en cookie bara. Signera sedan värdet för att se till att ingen ändrar på informationen (te.x ändrar 1 till 100 och helt plötligt blir användare 100).

Kod:
# Sätter en cookie
cookie = MD5(SECRET + id) + "-" + id

# Läser och verifierar
mac, id = cookie.split("-")
if mac != MD5(SECRET + id)
  # någon har ändrat id:t
else
  # allt är som de ska, hämta användaren
EDIT: Vi pratar alltså om User#id här, inte Cookie#id. Hämta alltså användaren direkt vid varje sidomladdning.

Senast redigerad av Nerix den 2014-10-25 klockan 22:26
Nerix är inte uppkopplad   Svara med citatSvara med citat
Oläst 2014-10-25, 23:13 #14
naak2803 naak2803 är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jun 2011
Inlägg: 767
naak2803 naak2803 är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jun 2011
Inlägg: 767
Citat:
Ursprungligen postat av Nerix Visa inlägg
Spara ner id:t för användaren i en cookie bara. Signera sedan värdet för att se till att ingen ändrar på informationen (te.x ändrar 1 till 100 och helt plötligt blir användare 100).

Kod:
# Sätter en cookie
cookie = MD5(SECRET + id) + "-" + id

# Läser och verifierar
mac, id = cookie.split("-")
if mac != MD5(SECRET + id)
  # någon har ändrat id:t
else
  # allt är som de ska, hämta användaren
EDIT: Vi pratar alltså om User#id här, inte Cookie#id. Hämta alltså användaren direkt vid varje sidomladdning.
jo jo, så långt hänger jag med.
att lagra användarId:et i en cookie (krypterat). Men det kommer fortfarande leda till en massa sql anrop... dvs en anrop för varje gång sidan laddas.

frågan är då vilket som är bäst:
1. att lagra hela "user" i en dataset som en session
2. att lagra hela "user" i en dataset som en cookie
3. att lagra referens i en cookie som gör en db-anrop för att få fram användare för varje sidan.
naak2803 är inte uppkopplad   Svara med citatSvara med citat
Oläst 2014-10-25, 23:27 #15
Nerix Nerix är inte uppkopplad
Flitig postare
 
Reg.datum: Oct 2010
Inlägg: 398
Nerix Nerix är inte uppkopplad
Flitig postare
 
Reg.datum: Oct 2010
Inlägg: 398
Citat:
Ursprungligen postat av naak2803 Visa inlägg
jo jo, så långt hänger jag med.
att lagra användarId:et i en cookie (krypterat). Men det kommer fortfarande leda till en massa sql anrop... dvs en anrop för varje gång sidan laddas.

frågan är då vilket som är bäst:
1. att lagra hela "user" i en dataset som en session
2. att lagra hela "user" i en dataset som en cookie
3. att lagra referens i en cookie som gör en db-anrop för att få fram användare för varje sidan.
Nja, du krypterar inget. Informationen hash:as.

Att läsa från databasen vid varje anrop kommer att ha minimal inverkan på din applikation. Vi pratar om 5 ms< / query. Helt onödig optimering. De du pratar om är att spara ner information om användaren på två ställen, vilket kommer skapa en hel del problem och förmodligen resultera i en del buggar. Spara allt på ett stället (i databasen) och hämta informationen när du behöver den.
Nerix är inte uppkopplad   Svara med citatSvara med citat
Oläst 2014-10-26, 00:01 #16
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Citat:
Ursprungligen postat av naak2803 Visa inlägg
men kommer den inte sega ner servern?

eftersom session tar utrymme på servern, och säg att man har 50 samtidiga användare med ca 20 parametrar per användare vilket blir 50*20=1000 celler med data.
Den mängden data är småpotatis för en normal server, inget att oroa sig för.

Jag brukar lagra användaraid, namn och tid för senaste aktivitet i sessionen och hämta från databasen vid varje sidladdning.

Det ska till hiskeligt många samtidiga användare för att svartiderna ska bli ett problem.

Senast redigerad av Conny Westh den 2014-10-26 klockan 00:10
Conny Westh är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 20:43.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017