ASP.NET MVC - 允许用户仅修改自己的数据

时间:2017-06-22 05:35:36

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

我有一个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]属性用于编辑,但我仍然需要验证用户是否正在编辑他们自己的数据。

这可以使用另一个属性来完成,所以我不必在我的方法中重复代码,如果是这样,我该怎么编码呢?

1 个答案:

答案 0 :(得分:4)

他们通常在一般原则中使用Autorize属性。

为了确保操作根据输入是合法的,最简单的方法是检查方法控制器(ActionResult函数)当前用户是否等于执行编辑的用户:

[HttpPost]
public ActionResult Edit(UserProfile model)
{
    if(User.Identity.GetUserId() != model.ApplicationUser.Id)
        return new HttpUnauthorizedResult();

    ...
}