QimenMedlem sedan juni 20015 009 inlägg Hej
Funderar på hur jag ska bygga ett inloggningssystem som är effektivt och säkert. Vill ha med så att man kan vara med i olika grupper och ha olika rättigheter osv. Vet dock inte hur jag ska strukturera databasen och hur jag ska lösa själva säkerheten. Kommer använda mySql som databas.
Vilket är säkrast? Att köra med sessions eller cookies?
Tar sessions någon betydlig kraft på servern?
Är det ett bra sätt att köra med siffror som behörighet? alltså medlemmar har 0001, admins har 0002. Eller är det kanske bättre man sätter ex. A på medlemmar och så har man en annan tabell där men definerar vad "A"-medlemmar får göra?
Sen är det bra om man är inaktiv i ex. 5 minuter så ska man loggas ut. Hur löser man det på smartast sätt?
Systemet kommer användas av (förhoppningsvis) många användare samtidigt, men där användarna inte är inloggade så länge. Om det spelar någon roll. ;)
Jag har kommit fram till att jag minst måste ha 3 grupper, ev 4.
En admingrupp som har alla rättigheter. Sen en grupp "moderatorer", dvs en grupp som inte har lika många rättigheter. Samt en grupp för vanliga användare. Sen kanske jag ska med en grupp för avstängda?
Har låtit mig inspirerats mig av sgtpepper's ytterst bra inlägg här.
Hehe, hoppas inlägget inte blev alltför luddigt. :moose
SPiNMedlem sedan mars 20007 896 inlägg sgtpepper är mycket vettig, du gör rätt i att inspireras av honom. :) ;)
Sen är det bra om man är inaktiv i ex. 5 minuter så ska man loggas ut. Hur löser man det på smartast sätt?
Då får du använda sessioner eller bygga ditt eget system, som jag föreslog tidigare. Med Cookies har du inte någon chans att ställa in detta, och som jag förstod det så kunde du nu använda cookies?
renholmMedlem sedan apr. 20012 266 inlägg Det går att lösa utan session men vet inte om man tjänar något på det. För varje request uppdateras ett värde i databasen som anger när användaren senaste besökte en sida, om detta värde är 5 minuter efter den nuvarande tiden tas ticket id bort från databasen och personen är inte längre inloggad. Detta bygger dock på att man har en databas med användare och ett fält för ticketid och för lastaccess. Bara ett förslag, men kräver databaskopplingar vid varje request.
QimenMedlem sedan juni 20015 009 inlägg
SPiN skrev:
Då får du använda sessioner eller bygga ditt eget system, som jag föreslog tidigare. Med Cookies har du inte någon chans att ställa in detta, och som jag förstod det så kunde du nu använda cookies?
Kan använda både cookies och sessions på webbhotellet, problemmet var bara när jag testade på min lokala server. Dock funkar allt som det ska där med. :)
Vissa säger att sessions tar kraft på servern, är det något man bör ta hänsyn till eller är då så lite så det inte spelar någon roll?
SPiNMedlem sedan mars 20007 896 inlägg Jag tror inte att det är någon fara alls, åtminstone inte om du jämför med att skapa ett eget sessionssystem - då är det rätt lika.
Jag måste rätta mitt förra inlägg också, jag menade såklart att "...och som jag förstid det så kunde du nu använda sessions?". :)
Vad var din konkreta fråga, var det hur du skulle strukturera databasen? Fick du inte svar på den frågan av sgtpepper? :)
QimenMedlem sedan juni 20015 009 inlägg Mjo hur jag strukturerar databasen förstår jag någotsådär. Men hur/var jag lägger de olika sql:erna typ.
Ska jag bara ha en enkel koll om sessionen finns när man är inloggad? Ska jag ha så att när man loggar in så sätts online = 1 i databasen, när man loggar ut så sätts den till 0. Loggar man inte ut så sätts man till offline efter 20 minuter. Har jag det så måste jag ju uppdatera datumet i dbn i princip på varje sida. Ska jag sedan kolla om användaren är online/offline? det känns onödigt på något sätt :l
Jag vet inte riktigt hur jag ska använda/länka samman de olika tabellerna som sgtpepper skrev.
Han skrev ett exempel på fyra olika rättigheter, read, create, update och delete, men jag kommer antagligen behöva många fler saker som man ska kunna och inte kunna.
Ska jag kanske göra en tabell som har alla saker man kan göra. Där man sedan bestämmer om gruppen ska ha den rättigheten (1 eller 0).
- id
- gruppID
- rättighet 1
- rättighet 2
osv..
Ex. för en grupp då:
id gruppID rättighet1 rättighet2 rättighet3
1 A 1 0 0
Eller det kanske inte är ett bra sätt att lösa det på?
renholm: Lika bra att använda sessions då alltså. :)
renholmMedlem sedan apr. 20012 266 inlägg
Qimen skrev:
renholm: Lika bra att använda sessions då alltså. :)
troligen, men går gör det... :)
SPiNMedlem sedan mars 20007 896 inlägg Qimen, du behöver inte fler fält i databasen - det du behöver är bara fler typer. Som schassen skrev så blev det där med bitmönster lite udda, men det går ju att komma förbi på ett eller annat sätt. Du kan ju iofs utveckla det ännu mer med bitmönster och ha t.ex. byte-mönster ( 8 bitar, istället för 4 som sgtpepper visade med ). Man kan göra på många olika sätt här, och i det här fallet spelar det egentligen igen roll hur man gör så länge det fungerar. :)
Det krävs ju rätt mycket modellerande för att få en bra databasstruktur med vettiga fält och värden, för att kunna få det uppdateringsbart, m.m. Sitt en timme eller två med papper och penna och utveckla sgtpeppers idé till något som passar dig. Jag vet inte om ditt UML-verktyg stöder databasmodellering, men om det gör det kan du ju använda det. :)
QimenMedlem sedan juni 20015 009 inlägg Visst, ska titta närmare på det.
Angående UML-verktyg, har inte tittat så mycket på det (har typ bara ritat upp hur jag ska lägga upp sidorna för en webbplats i ms visio :p ). Har dock ett annat program som jag tänkt testa nu, PowerDesigner. :)
SPiNMedlem sedan mars 20007 896 inlägg Gå till http://www.visual-paradigm.com och ladda ner deras Community Edition, den är najs. :) ( Funkar för databasmodellering också, har jag för mig )
När du modellerar, ha gärna i åtanke hur du kommer att bygga upp systemet också. Blir det enkel, strukturell PHP eller objektorienterad PHP ( Som du bör använda ;) )? Kan underlätta i modellerandet.