静态方法成员身份数据泄漏
本文关键字:泄漏 数据 身份 成员 静态方法 | 更新日期: 2024-09-24 11:07:19
我想使用实体框架从数据库中获取结果,并使用静态方法根据asp.net用户是否为管理员来筛选这些结果。
给定此代码,是否会有非管理员用户将获得管理员结果的实例?
如果是这样的话,我将如何使用静态方法来实现我想要的结果?
public class Listings
{
public static List<Listing> GetListings()
{
bool isAdmin = User.IsInRole("admin");
List<Listing> listings;
using(DBContext dbContext = new DBContext())
{
listings = (from l in dbContext.Listings
where l.Public || isAdmin
select l).ToList();
}
return listings
}
}
这取决于从哪里获得DbContext
。它的实例方法不是线程安全的。
如果它是在ASP.NET请求作用域中创建的(每个独立请求中都有一个新实例),那么您是安全的,代码是正确的。
如果它是共享的,那么任何事情都可能发生,很可能您会从对同一数据库上下文的并发访问中获得异常。
从类似线程了解更多信息
每个web请求一个DbContext。。。为什么?