使用SimpleMembershipProvider更新自定义用户配置文件字段?

时间:2012-11-05 00:17:42

标签: c# .net sql asp.net-mvc asp.net-membership

我在名为UserProfile的{​​{1}}表格中添加了一个自定义字段,我可以在注册时将数据输入到配置文件中,如下所示:

ClassOfYear

但是,现在我希望能够在管理它时更新配置文件,但我似乎无法找到这样做的方法。 我是否需要自己更新var confirmationToken = WebSecurity.CreateUserAndAccount(model.UserName, model.Password, propertyValues: new { ClassOfYear = model.ClassOfYear }, requireConfirmationToken: true); 表格?如果没有,这样做的适当方法是什么?

仅供参考,我正在使用Dapper作为我的数据访问层,以防万一。但是,如上所述,我可以通过Dapper更新UserProfile表,如果这是我应该做的,我只是认为UserProfile类或类似的东西已经有了一个方法,因为自定义用户个人资料字段与WebSecurity方法集成在一起。

全部谢谢!

2 个答案:

答案 0 :(得分:4)

除了在创建时,SimpleMembershipProvider代码中没有任何内容可以对其他字段执行任何操作。

只需自己从ORM查询值。

您可以使用WebSecurity.GetUserId(User.Identity.Name)获取用户的ID,然后使用Dapper查询UserProfile表。

答案 1 :(得分:2)

以防任何人遇到同样的问题。在使用SimpleMembership进行了很多战斗后,我得到了一个解决方案,它填充了webpages_Membership和我的自定义Users表。有关说明,请遵循我的代码:

public ActionResult Register(RegisterModel model)
    {
        if (ModelState.IsValid)
        {
            TUsuario userDTO= new TUSer()
                {
                    Name = model.Name,
                    Login = model.Login,
                    Pass = model.Pass.ToString(CultureInfo.InvariantCulture),
                    Active = true,
                    IdCompany = model.IdCompany,
                    IdUserGroup = model.IdUserGroup,
                };
            try
            {
                WebSecurity.CreateUserAndAccount(model.Login, model.Pass, new { IdUser = new UserDAL().Seq.NextVal(), Name = userDTO.Name, Login = userDTO.Login, Active = userDTO.Active, Pass = userDTO.Pass, IdCompany = userDTO.IdCompany, IdUserGroup = userDTO.IdUserGroup });

                WebSecurity.Login(model.Login, model.Pass);

在诅咒框架之后,给了我一股清新的空气:)

PS。:使用WebSecurity.InitializeDatabaseConnection功能在global.asax文件中指定users表。