2009-07-22 6 views
2

Ich frage mich, welche Best Practices für die Erstellung von nicht protokollierbaren Konten gelten. In StackOverflow gibt es ein Community-Wiki-Konto, von dem ich annahm, dass es nicht eingeloggt sein kann.Best Practices für nicht protokollierbare Konten

Wie sollte ich über Skripting für nicht-loggable Konten gehen? Wenn es ein Konto gibt, auf das ich nicht zugreifen möchte, sollte ich dann Parameter festlegen, wie Sie sich nicht bei Konten mit IDs unter 0 anmelden können? Oder sollte ich nur manuell die IDs definieren, die nicht in der Konfigurations-ID angemeldet werden können? oder gibt es einen besseren Weg?

Antwort

5

Für mich sollten Sie ein Flag in den Kontodaten verwenden, um die Protokollierungsfunktion festzulegen oder zu widerrufen.

Diese Fähigkeit kann mit einer Abfrage auf SQL-Ebene ziemlich einfach erzwungen werden.

Eine Abfrage wie:

select wathever from user where loggging=1 and user="aUser" and passwd="password" 

den Trick tun können.

Beantworten Sie Ihren Kommentar: Vielleicht ein colum mit Ihnen scheint nicht effizient, aber Sie haben die Pro zu beachten:

  • Sie haben die Informationen über Benutzer in einer einzigen Schicht, verstreut nicht um beetween Datenbank , Konfigurationsdateien oder wathever

  • können Sie widerrufen oder die Protokollierungsfunktion auf jedes Konto gewähren, ohne Konfigurationsdateien zu modifizieren

2

Sie können eine „Fahne“ auf Ihrer Benutzertabelle gesetzt:

loggable  int(1)  default 1 

Dann können Sie auf Ihrem Skript überprüfen:

//... data retrieve login ... 
if($userRow['loggable'] == 1) { 
    //User can login, do stuff 
} else { 
    //Tell him that he can't login 
} 
+1

Aber wäre nicht das Hinzufügen einer ganzen Spalte einfach loswerden 1 oder 2 Benutzer ineffizient:

Um Eineki SQL zu erweitern? –

+2

Wenn Sie bereits Rollen haben, klingt das Hinzufügen einer Rolle "keine Anmeldung" am besten für mich. Ansonsten kann ich mir nicht vorstellen, dass es schrecklich ineffizient ist, einen "Booleschen" für "Loggable" hinzuzufügen. Ich vermute, dass Sie auf jeden Fall eine Anzahl von verschiedenen Berechtigungen für jeden Benutzer erhalten werden. Basing es auf der ID-ID kann auch funktionieren, hat aber wenige Vorteile, IMO. – jsight

+0

Wenn Sie das als eine Antwort setzen, würde ich es markieren. –

0

eine „speicherbare“ Feld Konten hinzufügen. Es ist skalierbar für den Fall, dass Sie viele nicht-loggable Accounts haben.

0

Sie könnten ein leeres Passwort als nicht logbar definieren.

select whatever from user where loggging=1 and user="aUser" and 
    passwd="password" AND passwd IS NOT NULL