【问题标题】:Why is WebSecurity ignoring my password?为什么 WebSecurity 会忽略我的密码?
【发布时间】:2013-09-16 09:03:54
【问题描述】:

我已将SimpleMembership 配置为使用我自己的表来存储用户数据,即Occupant 表,如下所示:

WebSecurity.InitializeDatabaseConnection("EstatesContext", "Occupant", "Id", "UserName", autoCreateTables: true);

在注册事件中,像这样传递这个表的数据:

WebSecurity.CreateUserAndAccount(
    model.UserName,
    model.Password,
    propertyValues: new { 
        IdNumber = model.IdNumber,
        Surname = model.Surname,
        FirstName = model.FirstName,
        Type = model.Type,
        IsActive = model.IsActive,
        EMailAddress = model.EmailAddress                            
    });

当我尝试注册新用户时,我收到以下错误:

无法将值 NULL 插入“密码”列,表 'XTimeEstates.dbo.Occupant';列不允许空值。插入 失败。

SimpleMembership 是否散列并存储传递给CreateUserAndAccount 的密码?这意味着我不应该明确存储任何密码数据?还是有其他问题?

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-4 asp.net-membership membership-provider


    【解决方案1】:

    Simple Membership 提供程序将用户密码存储在“webpages_Membership”表中(除非禁用,否则由框架自动生成),因此如果您的“Occupant”表有一个不可为空的密码字段,您需要将其传递为propertyValues 构造中的附加值。话虽如此,Occupant 表中的 Password 字段不是必需的,因为 Simple Membership 提供程序会处理这一点。 Simple Membership 所需的只是一个字段,用于将 UserId 和 UserName 存储在您传递给 InitializeDatabaseConnection 的任何表中。

    【讨论】:

    • thnx @DigitalMethod... :)
    猜你喜欢
    • 2017-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-11
    • 1970-01-01
    • 1970-01-01
    • 2022-12-04
    相关资源
    最近更新 更多