我有一个UserProfile模型,它与AspNetUser有一对一(零)关系。
用户配置:
public class UserProfile
{
public int Id { get; set; }
public virtual ApplicationUser ApplicationUser { get; set; }
[Required]
[Display(Name = "Full Name")]
public string FullName { get; set; }
}
如何验证正在修改的UserProfile是用户自己的数据? 我在我的POST和GET方法上放置了一个[Authorize]属性用于编辑,但我仍然需要验证用户是否正在编辑他们自己的数据。
这可以使用另一个属性来完成,所以我不必在我的方法中重复代码,如果是这样,我该怎么编码呢?
答案 0 :(得分:4)
他们通常在一般原则中使用Autorize
属性。
为了确保操作根据输入是合法的,最简单的方法是检查方法控制器(ActionResult函数)当前用户是否等于执行编辑的用户:
[HttpPost]
public ActionResult Edit(UserProfile model)
{
if(User.Identity.GetUserId() != model.ApplicationUser.Id)
return new HttpUnauthorizedResult();
...
}