7

UserProfile我在名为的表中添加了一个自定义字段,ClassOfYear并且可以在注册过程中将数据导入配置文件,如下所示:

var confirmationToken = WebSecurity.CreateUserAndAccount(model.UserName,
    model.Password,
    propertyValues: new { ClassOfYear = model.ClassOfYear },
    requireConfirmationToken: true);

但是,现在我希望能够在管理配置文件时更新配置文件,但我似乎找不到这样做的方法。我需要自己简单地更新UserProfile表格吗?如果没有,这样做的适当方法是什么?

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

谢谢大家!

4

2 回答 2

4

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

只需从您的 ORM 中自己查询值。

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

于 2012-11-12T16:59:08.117 回答
2

以防万一有人遇到同样的问题。在与 SimpleMembership 进行了多次斗争后,我得到了一个解决方案,它填充了 pages_Membership 和我的自定义用户表。为了澄清,请按照我的代码:

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.: users 表是在 global.asax 文件中使用 WebSecurity.InitializeDatabaseConnection 函数指定的。

于 2013-03-21T13:09:47.537 回答