【问题标题】:ASP.NET SqlMembershipProvider: Unique but not required email?ASP.NET SqlMembershipProvider:唯一但不是必需的电子邮件?
【发布时间】:2010-10-12 22:00:38
【问题描述】:

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

我只找到了requiredUniqueEmail 属性(web.config),它使电子邮件成为强制性的。我是否必须在帐户注册过程中忽略这一点并自行检查现有电子邮件地址?

或者有没有更好的方法来处理这种情况?

【问题讨论】:

    标签: asp.net-membership sqlmembershipprovider


    【解决方案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
    

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

    【讨论】:

    • 似乎是“最简单”的解决方案。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    • 2019-01-26
    • 2016-05-09
    • 2012-08-03
    • 2015-03-02
    • 2021-08-22
    相关资源
    最近更新 更多