2010-09-21 2 views
0

Je tente de ne jamais supprimer les enregistrements réels des tables importantes dans ma base de données, à la place les marquer comme supprimés en définissant le champ correspondant sur True. Mais dans le cas d'une adhésion, cette approche empêchera tout futur utilisateur de réutiliser le nom d'utilisateur de l'utilisateur "supprimé". Le nom d'utilisateur ne sera pas un problème, mais que se passe-t-il si l'utilisateur "supprimé" décide de s'inscrire à nouveau et essaie d'utiliser le même e-mail? Étant donné que les courriels sont également uniques dans l'adhésion à asp.net, il y aura une erreur que le courriel est déjà utilisé (par le compte supprimé). Quelle est la meilleure façon de sortir de cela?Quelle est la meilleure façon d'implémenter une suppression d'utilisateur non permanente?

Merci d'avance.

Répondre

3

Je pense que l'utilisation d'un indicateur actif fonctionne bien. Si un utilisateur désactive son compte et s'enregistre à nouveau, après avoir vérifié si l'e-mail existe déjà, vous pouvez ensuite vérifier s'il est désactivé et lui proposer de réactiver son compte.

+0

Ouais, c'est comme ça que je pensais le faire. Si je trouve l'e-mail que je leur demande s'ils veulent récupérer le mot de passe, puis sur la réinitialisation du mot de passe réactiver leur compte. – Dimitri

+0

Puisque l'adhésion que j'utilise n'est pas pure SqlMembershipProvider, mais plutôt un hybride entre Sqlmembership et custom store, je devrais marquer cela comme la réponse. mais merci à tous ceux qui ont répondu, vraiment l'apprécier. – Dimitri

1

Vous avez peut-être besoin d'un chemin de code pour la réactivation, plutôt que d'une nouvelle création de compte après la suppression. C'est comme ça que WoW le fait, et WoW ne peut pas avoir tort.

+0

Pourriez-vous s'il vous plaît fournir un peu plus de détails? Je ne pense pas que je connais les chemins de code. – Dimitri

+0

... quoi? Lorsque quelqu'un tente de créer un compte avec un e-mail existant, utilisez simplement une logique métier différente pour gérer le scénario. N'essayez pas de faire la même expérience que de créer un nouveau compte. –

+0

oh, je vois ce que vous voulez dire – Dimitri

0

Il suffit de changer le nom d'utilisateur pour quelque chose comme 'deleted001' ou quelque chose comme ça. Beaucoup de sites le font.

modifier
La réponse de Stefan est assez bon ... à moins que vous voulez qu'ils soient en mesure d'éliminer essentiellement les informations d'identification de votre site. À quel moment vous devez renommer l'utilisateur.

+0

Pas vraiment nécessaire, aussi longtemps que vous indiquez clairement que l'information n'est jamais purgée. Je ne pense pas que beaucoup d'utilisateurs soient aussi paranoïaques. –

+0

Personnellement, je pense qu'ils devraient être ... mais c'est peut-être ma propre paranoïa qui passe. ;) – NotMe

+0

Le nom d'utilisateur de chnaging n'est pas bon puisque 1) le même utilisateur ne pourrait pas réutiliser son email encore; 2) qu'en est-il des suppressions 2, 3 et suivantes du même nom d'utilisateur? Comment le gérer? 3) Ainsi, les différents utilisateurs auront, par exemple, des messages ou n'importe quoi sous le même nom d'utilisateur? 4) etc. Donc, le chemin de réactivation est moins gênant. moins laborieux et plus correct sur le plan éthique. Je, par exemple, n'aime pas l'idée que mon pseudo est utilisé par d'autres –

1

Si vous utilisez SqlMembershipProvider, il suffit de verrouiller le compte et de définir un commentaire indiquant que le verrou est permanent.

Ceci n'impliquerait aucune modification, uniquement un ajustement du flux de travail.

Encore une fois, cela suppose que vous utilisez une pile d'appartenance de stock.

+0

Êtes-vous en train de dire que SqlMembershipProvider exclura les e-mails des comptes verrouillés de la validation? – Dimitri

+0

@dimi - correct - les comptes verrouillés ne peuvent pas être validés. cela permettrait d'éviter le verrouillage d'un compte, non? ;-) –

+0

um, je suppose :) dois essayer que – Dimitri

Questions connexes