将ASP.NET MVC中的控制器保护到正确的用户

将ASP.NET MVC中的控制器保护到正确的用户,asp.net,asp.net-mvc,security,Asp.net,Asp.net Mvc,Security,我正在ASP.NETMVC中构建一个应用程序来记录任务 用户只能删除自己的任务。是否有一种标准方法可以防止其他登录用户使用属于另一个用户的任务的[id]参数简单地键入删除控制器url,从而删除另一个用户任务 例如: 用户A有一个id为13的任务。当用户A查看任务时,会有一个指向/tasks/delete/13的链接来删除任务记录。用户B可以查看任务13,然后决定在地址栏中输入/tasks/delete/13,从而删除用户A的任务 您是否必须在控制器中编写自己的代码来防止这种情况,或者是否有一种通

我正在ASP.NETMVC中构建一个应用程序来记录任务

用户只能删除自己的任务。是否有一种标准方法可以防止其他登录用户使用属于另一个用户的任务的[id]参数简单地键入删除控制器url,从而删除另一个用户任务

例如:

用户A有一个id为13的任务。当用户A查看任务时,会有一个指向/tasks/delete/13的链接来删除任务记录。用户B可以查看任务13,然后决定在地址栏中输入/tasks/delete/13,从而删除用户A的任务

您是否必须在控制器中编写自己的代码来防止这种情况,或者是否有一种通常处理这种情况的标准方法


非常感谢

NerdDinner应用程序在其Dinners控制器中就是这样一个例子

有关如何执行此操作的说明如下:


沿着页面的一半往下走,直到看到标题:在创建晚餐时使用User.Identity.Name属性,在编辑晚餐时使用User.Identity.Name属性。

在ASP.NET MVC中涉及安全时,您拥有身份验证和授权

身份验证是验证用户身份的过程,通常涉及根据数据库检查用户名和密码,然后为该用户分配某种用户ID

授权是限制对系统资源的访问的过程,通常通过角色来完成。但是,角色通常不包括您所追求的所有权

在您的情况下,您需要编写自己的代码来对任务执行所有权检查,例如:

if (!task.IsOwnedBy(userID))
{
  throw new HttpException ((int)HttpStatusCode.Unauthorized, 
                           "You are not authorized.");
}
我在这里问了一个类似的问题,还没有决定如何将其集成到我的业务层中