ASP.NET SqlMembershipProvider: уникальный, но не обязательный адрес электронной почты? - PullRequest
1 голос
/ 13 октября 2010

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

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

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

1 Ответ

2 голосов
/ 16 ноября 2010

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

Изменить 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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...