1

我已经配置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其他地方的密码?这意味着我不应该明确存储任何密码数据?还是有其他问题?

4

1 回答 1

2

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

于 2013-09-18T02:57:43.010 回答