ASP.NET SqlMembershipProvider: уникальный, но не обязательный адрес электронной почты?
Есть ли способ настроить ASP.NET SqlMembershipProvider так, чтобы электронная почта была необязательной, но когда она указана, должна быть уникальной?
Я нашел только requiredUniqueEmail
атрибут (web.config), который делает Email обязательным. Должен ли я оставить это и выполнить проверку существующих адресов электронной почты самостоятельно в процессе регистрации учетной записи?
Или есть более хороший способ справиться с этим сценарием?
1 ответ
Решение
Простой, но, вероятно, рискованный способ - изменить хранимую процедуру напрямую, чтобы сделать это.
изменять 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
Я говорю, что это рискованно, потому что никто не будет ожидать, что вы измените это, и вам лучше хорошо документировать изменения.