加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 确保登录用户只能看到他们的数据的最佳方法

发布时间:2020-12-16 07:00:36 所属栏目:asp.Net 来源:网络整理
导读:这听起来像是一个愚蠢的问题,但我只是想知道我是否在任何地方错过了一个技巧. 场景是,我有一个使用Simple Memebership的Web应用程序,用户可以注册使用它(例如发票程序). 但是,他们应该只能查看/更新/删除他们自己添加到数据库/ Web应用程序的信息. 确保用户
这听起来像是一个愚蠢的问题,但我只是想知道我是否在任何地方错过了一个技巧.

场景是,我有一个使用Simple Memebership的Web应用程序,用户可以注册使用它(例如发票程序).

但是,他们应该只能查看/更新/删除他们自己添加到数据库/ Web应用程序的信息.

确保用户只能访问其信息的最佳方法是什么?

是为每个表添加一个用户名字段,例如:

public class Invoice
{
     public int InvoiceId { get; set; }
     public int CustId { get; set; }
     public string UserName { get; set; }
}

public class Item
{
   public int ItemId { get; set; }
   public int InvoiceId { get; set; }
   public string UserName { get; set; }
}

…然后在访问数据的任何控制器中,只需在每个查询中添加用户名检查,例如:

var Inv = db.Invoices.Where(x => x.UserName = User.Identity.Name);
var Itm = db.Items.Where(y => y.UserName = User.Identity.Name);

这就是我目前正在使用的,但想知道这是否是最佳做法?或者,如果有一种更简单的方法,我们现在进入MVC4?

最好是从UserProfile表中使用UserName或UserId,还是重要?

更新以在评论后添加清晰度

所以有10个用户注册了 – 并且都创建了自己的发票.我不希望任何用户看到任何其他用户发票.

谢谢你的建议.

标记

解决方法

如果您正确设置了数据库关系,那么您应该可以参考例如用户的发票如下:

var invoices = dbContext.Users.first(u=>u.id == idParam).Invoices;

您可以通过测试验证发票是否属于用户

if(dbContext.Invoices.Any(i=>i.invoiceID))//invoice exists?
{
    //Invoice belongs to user?
    bool invoiceBelongsToUser = dbContext.Users.first(u=>u.id == idParam)
    .Invoices.Any(i=>i.invoiceID == invoiceIDParam);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读