1

有没有办法配置 ASP.NET SqlMembershipProvider 使得电子邮件是可选的,但提供时必须是唯一的?

我只找到了requiredUniqueEmail强制使用电子邮件的属性 (web.config)。我是否必须在帐户注册过程中自行检查现有电子邮件地址?

还是有更好的方法来处理这种情况?

4

1 回答 1

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

我说这是有风险的,因为没有人会指望你修改它,你最好把更改记录好。

于 2010-11-16T16:37:58.380 回答