限制用户访问其他用户的数据

时间:2019-01-21 10:13:07

标签: c# asp.net-mvc model-view-controller

我在设计一种通用功能时遇到了问题,即该功能可以将用户创建的信息从其他用户隐藏起来。例如,要编辑由USER1创建的产品,通常我们使用以下之一。

  1. / Product / Edit / Id / 1
  2. / Product / Edit?Id = 1

enter image description here

我担心的是,如果USER2的ID为1,他还能够访问由USER1创建的ID = 1的产品。如何限制USER2访问USER1的数据?这可能需要应用于项目中的每个模块。是否有实现此目的的通用方法?谢谢

2 个答案:

答案 0 :(得分:2)

如果要保留正在访问数据的用户的状态。您可以向此查询以及整个应用程序添加"WHERE CreatedBy = {YOURLOGGEDINUSER}"。然后,即使他获得正确的ID,也不会返回任何数据。

答案 1 :(得分:1)

假设您已启用某种ASP.Net身份验证(用户已证明自己是谁),那么现在您需要考虑授权(允许用户执行的操作)。

这两个术语经常组合或互换使用无济于事。在MVC中,经常使用自定义AuthorizeAttribute来完成这两项。

对于记录管理,可以通过HttpContext.Current.UserIPrincipal访问当前登录的用户。

用户ID通常设置为HttpContext.User.Current.Identity.Name,尽管如果不是每条路由都经过验证,则可能需要进行空检查。

相关问题