当用户更新实体框架中的行时,我如何检查他是否是实体的所有者

本文关键字:实体 检查 何检查 所有者 是否是 框架 更新 用户 | 更新日期: 2023-09-27 17:57:44

我有问题。。。我写了一个网站,现在我必须保护我的页面。所以问题是…当用户编辑一个实体时,我应该检查他是否是这个实体的所有者。传统上(没有实体框架),我通过在sql查询中包含where子句来实现。例如:

update posts set
 title = "Great Post"
where 
 post_id = 5 and
 owner_id = " + CurrentLogedinUser.Id + "

但我不知道如何在实体框架中做到这一点。

有人能告诉我吗?

当用户更新实体框架中的行时,我如何检查他是否是实体的所有者

在EF中,您通常会从上下文中加载项目,对其进行更改,然后将其放回。因此,您可以检查如下值:

var post = context.Posts.Single(p => p.PostId == 5);
if(post.OwnerId != CurrentLoggedInUser.Id) throw new Exception("Stop hacking!");
post.title = "Great Post";
context.SaveChanges();

如果owner_id是您的Post实体上的属性,那么您不能在提交更新之前(甚至在允许他们编辑更新之前)检查吗?