我已将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
的密码存储在其他地方吗?意思是我不应该明确存储任何密码数据?还是别的错了?
答案 0 :(得分:2)
简单成员资格提供程序将用户密码存储在“webpages_Membership”表中(这是由框架自动生成的,除非禁用),因此如果您的“Occupant”表具有不可为空的密码字段,则需要将其作为propertyValues构造中的附加值。据说,由于简单成员资格提供者负责处理,因此不需要占用者表中的密码字段。 Simple Membership所需的只是一个字段,用于在传递给InitializeDatabaseConnection的任何表中存储UserId和UserName。