在用户更新实体框架中的行时,如何检查用户是否为实体所有者?

问题描述

| 我有问题...我写了一个网站,现在我必须保护我的页面。所以问题是...当用户编辑实体时,我应该检查他是否是该实体的所有者。传统(没有实体框架)我通过在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
实体的属性,那么您是否不能在提交更新之前(甚至在允许他们编辑更新之前)进行检查?     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...