我在设计一种通用功能时遇到了问题,即该功能可以将用户创建的信息从其他用户隐藏起来。例如,要编辑由USER1创建的产品,通常我们使用以下之一。
我担心的是,如果USER2的ID为1,他还能够访问由USER1创建的ID = 1的产品。如何限制USER2访问USER1的数据?这可能需要应用于项目中的每个模块。是否有实现此目的的通用方法?谢谢
答案 0 :(得分:2)
如果要保留正在访问数据的用户的状态。您可以向此查询以及整个应用程序添加"WHERE CreatedBy = {YOURLOGGEDINUSER}"
。然后,即使他获得正确的ID,也不会返回任何数据。
答案 1 :(得分:1)
假设您已启用某种ASP.Net身份验证(用户已证明自己是谁),那么现在您需要考虑授权(允许用户执行的操作)。
这两个术语经常组合或互换使用无济于事。在MVC中,经常使用自定义AuthorizeAttribute
来完成这两项。
对于记录管理,可以通过HttpContext.Current.User
的IPrincipal
访问当前登录的用户。
用户ID通常设置为HttpContext.User.Current.Identity.Name
,尽管如果不是每条路由都经过验证,则可能需要进行空检查。