创建新对象时在数据库中保存用户 ID
Posted
技术标签:
【中文标题】创建新对象时在数据库中保存用户 ID【英文标题】:Save userid on database when create new object 【发布时间】: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吗? 是的,我需要对当前登录用户的引用。 【参考方案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 模型类中,否则我会将其转换为表上的新属性...对吗?
这是来自SimpleMembership
或WebMatrix
的OOTB 函数。我有一个类文件(称为 UserHelpers
),其中包含这两个 sn-ps 以便于访问。
我也得到了关于这个答案***.com/questions/14630158/…的另一个解决方案。您可以使用WebSecurity.CurrentUserId
获取ID 或WebSecurity.CurrentUserName
获取名称。
不错!感谢您的快捷方式以上是关于创建新对象时在数据库中保存用户 ID的主要内容,如果未能解决你的问题,请参考以下文章
Entity Framework 6 - . 创建新对象,保存更改,根据新 id 重新查询对象,返回 null
离开 iPhone 时在 Apple Watch 上记录和保存锻炼?
Discord money bot 将用户 ID 保存在 json 文件中。当 Not 重新启动时,它会为每个人创建一个新的(但相同的)ID