2009-07-22 7 views
2

Je me demande quelles sont les meilleures pratiques pour la création de comptes non enregistrables. Sur StackOverflow, il existe un compte Wiki de la communauté dans lequel je suppose que je ne peux pas me connecter.Meilleures pratiques pour les comptes non enregistrables

Comment est-ce que je devrais aller sur le scripting pour les comptes non-loggable? S'il y a un compte que je ne veux pas être accessible, devrais-je définir des paramètres comme si vous ne pouviez pas vous connecter à des comptes avec des ID inférieurs à 0? Ou devrais-je simplement définir manuellement les ID qui ne peuvent pas être connectés dans l'ID de configuration? ou y a-t-il un meilleur moyen?

Répondre

5

Pour moi, vous devez utiliser un indicateur dans les données du compte, afin de définir ou de révoquer la capacité de journalisation.

Cette fonctionnalité peut être appliquée avec une requête au niveau sql assez facilement.

Une requête comme:

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

peut faire l'affaire.

Répondre à votre commentaire: Peut-être à l'aide d'un Colum semble ne pas efficent pour vous, mais vous devez considérer le pro:

  • Vous avez des informations sur vos utilisateurs en une seule couche, ne sont pas dispersées autour beetween base de données , les fichiers de configuration, ou wathever

  • Vous pouvez révoquer ou accorder la capacité d'enregistrement à un compte sans avoir à modifier les fichiers de configuration

2

Vous pouvez définir un "drapeau" sur votre table utilisateur:

loggable  int(1)  default 1 

Ensuite, vous pouvez vérifier sur votre script:

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

Mais serait de ne pas ajouter une colonne entière de simplement se débarrasser de 1 ou 2 utilisateurs inefficaces? –

+2

Si vous avez déjà des rôles, l'ajout d'un rôle "no-login" me semble le mieux. Sinon, je ne peux pas imaginer qu'il soit terriblement inefficace d'ajouter un booléen pour "loggable". Je suspecte que vous finirez avec un certain nombre d'autorisations différentes pour chaque utilisateur de toute façon. Baser sur le db id peut fonctionner aussi, mais a peu d'avantages, imo. – jsight

+0

Si vous mettez cela comme une réponse, je le marquerais. –

0

Ajouter un champ "loggable" aux comptes. Il est évolutif dans le cas où vous finissez par avoir beaucoup de comptes non-enregistrables.

0

Vous pouvez rendre un mot de passe vide non enregistrable.

Pour étendre le SQL Eineki:

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