【问题标题】:Save userid on database when create new object创建新对象时在数据库中保存用户 ID
【发布时间】:2013-07-08 10:56:44
【问题描述】:

我有一个控制器,在创建操作中我需要用户 ID。

这是控制器。

    public ActionResult Create(MyCreateViewModel model)
    {
        if (ModelState.IsValid)
        {
            var myobject = new MyObject
            {
                Attrib1 = DateTime.Now.Date,
                Attrib2 = model.Etichetta,
                UserId = // I need the user ID...
            };

            // Save the object on database...                

            return RedirectToAction("Index");
        }
        return View(model);
    }

我正在使用 MVC 4 的 SimpleMembership 提供的 UserProfile 表。

在 MVC 4 中,在整个应用程序中管理 userID 的最佳实践是什么?

我必须在每个实体类中包含一个用户属性吗?

我应该使用Session[] 变量还是什么?

【问题讨论】:

  • 这个userID是当前登录用户的ID吗?
  • 是的,我需要对当前登录用户的引用。

标签: asp.net-mvc asp.net-mvc-4 simplemembership user-management userid


【解决方案1】:

您可以使用此行从UserProfiles 表中获取userId

var userId = WebSecurity.GetUserId(HttpContext.Current.User.Identity.Name);

您还可以使用此功能获取用户完整的个人资料,包括您可能要填充的任何自定义列。

public static UserProfile GetUserProfile()
        {
            using (var db = new UsersContext())
            {
                var userId = WebSecurity.GetUserId
                            (HttpContext.Current.User.Identity.Name);
                var user = db.UserProfiles
                             .FirstOrDefault(u => u.UserId == userId);
                if (user == null)
                {
                    //couldn't find the profile for some reason
                    return null;
                }
                return user;
            }
        }

【讨论】:

  • WebSecurity.GetUserId(HttpContext.Current.User.Identity.Name) 有效。如果我想使用该功能,我应该把它放在哪里?我猜不在 UserProfile 模型类中,否则我会将其转换为表上的新属性...对吗?
  • 这是来自SimpleMembershipWebMatrix 的OOTB 函数。我有一个类文件(称为 UserHelpers),其中包含这两个 sn-ps 以便于访问。
  • 我也得到了关于这个答案stackoverflow.com/questions/14630158/…的另一个解决方案。您可以使用WebSecurity.CurrentUserId 获取ID 或WebSecurity.CurrentUserName 获取名称。
  • 不错!感谢您的快捷方式
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多