Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
限制.NETCore中记录所有者对数据的访问_.net_Asp.net Mvc_Entity Framework_Asp.net Core - Fatal编程技术网

限制.NETCore中记录所有者对数据的访问

限制.NETCore中记录所有者对数据的访问,.net,asp.net-mvc,entity-framework,asp.net-core,.net,Asp.net Mvc,Entity Framework,Asp.net Core,我对.NETCore 2.0比较陌生,我想知道如何确保一个人只能查看/编辑他们创建的记录,并且是该记录的“所有者” 在从控制器保存之前,我知道如何将当前用户添加到创建对象,但我不确定检查编辑/读取访问的最佳方法。我应该在控制器中保留此逻辑吗?或者在模型/存储库上强制执行此操作 我有一个存储库功能来编辑“交易”对象 我觉得在我的整个应用程序中有很多这样的代码,不确定是否有更内置的方法来检查Entity Framework或.NET的身份包 如果有帮助的话,我并不担心管理员看到所有的东西。每个用户只

我对.NETCore 2.0比较陌生,我想知道如何确保一个人只能查看/编辑他们创建的记录,并且是该记录的“所有者”

在从控制器保存之前,我知道如何将当前用户添加到创建对象,但我不确定检查编辑/读取访问的最佳方法。我应该在控制器中保留此逻辑吗?或者在模型/存储库上强制执行此操作

我有一个存储库功能来编辑“交易”对象

我觉得在我的整个应用程序中有很多这样的代码,不确定是否有更内置的方法来检查Entity Framework或.NET的身份包


如果有帮助的话,我并不担心管理员看到所有的东西。每个用户只能看到自己的记录

将其保存在存储库中应该没问题。我不确定您是如何生成记录的,我建议您在存储库中使用ff:

public IEnumerable<Trade> GetTradesByUser(userId){
     return _context.Trades
    .Where(t => t.UserId == userId)
    .ToList();
}
因为你肯定他没有看到其他人的记录


希望这会有所帮助,将其保存在存储库中应该没问题。我不确定您是如何生成记录的,我建议您在存储库中使用ff:

public IEnumerable<Trade> GetTradesByUser(userId){
     return _context.Trades
    .Where(t => t.UserId == userId)
    .ToList();
}
因为你肯定他没有看到其他人的记录


希望这对您有所帮助首先,您可以使用.net core identity()(如果您的应用程序需要的话),或者您可以实现自己用户的管理逻辑

其次,如果我理解正确的交易只能由创建该交易的用户操纵

有两种情况

  • 是否要显示系统中的所有交易
  • 是否只显示用户创建的交易
  • 情景1: 如果只为用户显示所有交易,则可能需要在控制器中构建逻辑,防止用户修改其他人创建的交易。(类似于@Redan建议,也包括更多的视图逻辑)

    场景2:不需要验证。您可以在显示用户创建的记录时操作数据


    无论哪种方式,您都需要将用户实体与交易实体相关联并持久化用户数据。我还认为任何其他实体的情况都是一样的。

    首先,您可以使用.net core identity的()(如果应用程序需要的话),或者您可以实现自己用户的管理逻辑

    其次,如果我理解正确的交易只能由创建该交易的用户操纵

    有两种情况

  • 是否要显示系统中的所有交易
  • 是否只显示用户创建的交易
  • 情景1: 如果只为用户显示所有交易,则可能需要在控制器中构建逻辑,防止用户修改其他人创建的交易。(类似于@Redan建议,也包括更多的视图逻辑)

    场景2:不需要验证。您可以在显示用户创建的记录时操作数据

    无论哪种方式,您都需要将用户实体与交易实体相关联并持久化用户数据。我还认为,任何其他实体也将如此

    public void EditTrade(Trade trade)
    {
        _context.Trade.Add(trade);
    }