2010-10-12 2 views
1

Есть ли способ настроить ASP.NET SqlMembershipProvider таким образом, что Email является необязательным, но при условии, что он должен быть уникальным?ASP.NET SqlMembershipProvider: уникальная, но не требуемая электронная почта?

Я нашел только атрибут requiredUniqueEmail (web.config), который делает обязательным электронное письмо. Должен ли я оставить это и внедрить проверку существующих адресов электронной почты самостоятельно в процессе регистрации учетной записи?

Или есть ли лучший способ справиться с этим сценарием?

ответ

2

Простым, но, вероятно, рискованным способом является изменение хранимой процедуры непосредственно для этого.

Изменить aspnet_Membership_CreateUser заменой:

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 

с

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 

Я говорю, что это рискованно, потому что никто не будет ожидать вас, чтобы изменить это, и вы бы лучше документировать изменение хорошо.

+0

Кажется, это «самое простое» решение. Благодарю. – davehauser

 Смежные вопросы

  • Нет связанных вопросов^_^