2010-10-12 5 views
1

Existe-t-il un moyen de configurer ASP.NET SqlMembershipProvider de telle sorte que le courrier électronique est facultatif, mais lorsqu'il est fourni doit être unique?ASP.NET SqlMembershipProvider: Email unique mais non obligatoire?

J'ai seulement trouvé l'attribut requiredUniqueEmail (web.config) qui rend le courriel obligatoire. Dois-je laisser cela de côté et implémenter la vérification des adresses e-mail existantes moi-même dans le processus d'enregistrement du compte?

Ou existe-t-il une meilleure façon de gérer ce scénario?

Répondre

2

Un moyen facile, mais probablement risqué, consiste à modifier directement la procédure stockée pour ce faire.

Modifier aspnet_Membership_CreateUser en remplaçant:

IF (@UniqueEmail = 1) 
BEGIN 
    IF (EXISTS (SELECT * 
       FROM dbo.aspnet_Membership m WITH (UPDLOCK, HOLDLOCK) 
       WHERE ApplicationId = @ApplicationId AND LoweredEmail = LOWER(@Email))) 
    BEGIN 
     SET @ErrorCode = 7 
     GOTO Cleanup 
    END 
END 

avec

IF (EXISTS (SELECT * 
       FROM dbo.aspnet_Membership m WITH (UPDLOCK, HOLDLOCK) 
       WHERE ApplicationId = @ApplicationId AND LoweredEmail = LOWER(@Email))) 
    BEGIN 
     SET @ErrorCode = 7 
     GOTO Cleanup 
    END 

je dis qu'il est risqué parce que personne ne vous attendre à modifier ce et vous feriez mieux documenter le changement bien.

+0

Semble être la solution "la plus simple". Merci. – davehauser

Questions connexes