Asp.net core 基于id获取数据库记录

Asp.net core 基于id获取数据库记录,asp.net-core,asp.net-core-webapi,Asp.net Core,Asp.net Core Webapi,问候,, 我有一个网站,显示产品一切正常,直到现在,但我希望当前用户登录,以获取他/她的数据只,例如,如果用户id=1,它将获得所有产品id=1(我有外键约束在两个表之间)我使用非常简单的控制器,只获得所有产品,我在谷歌没有找到任何解决方案。 我正在使用带有EntityFramework和SQL SERVER数据库的.NET CORE 3.0 我目前使用的JWT令牌存储在web浏览器的本地存储中 这是我的产品控制器 public class ProductsController : Contro

问候,, 我有一个网站,显示产品一切正常,直到现在,但我希望当前用户登录,以获取他/她的数据只,例如,如果用户id=1,它将获得所有产品id=1(我有外键约束在两个表之间)我使用非常简单的控制器,只获得所有产品,我在谷歌没有找到任何解决方案。 我正在使用带有EntityFramework和SQL SERVER数据库的.NET CORE 3.0 我目前使用的JWT令牌存储在web浏览器的本地存储中

这是我的产品控制器

public class ProductsController : ControllerBase
{
    private readonly IAuthRepository _repo;
    private readonly DataContext _context;
    public ProductsController(DataContext context, IAuthRepository repo)
    {
        _context = context;
        _repo = repo;
    }

    [HttpGet]
    public async Task<IActionResult> AllProducts()
    {
        var All = await _context.Product.ToListAsync();
        return Ok(All);



    }
公共类产品控制器:控制器库
{
私有只读IAuthRepository\u repo;
私有只读数据上下文_上下文;
公共产品控制器(DataContext上下文,IAuthRepository repo)
{
_上下文=上下文;
_回购=回购;
}
[HttpGet]
公共异步任务AllProducts()
{
var All=wait_context.Product.toListSync();
返回Ok(全部);
}

下面是从jwt令牌获取用户ID的代码

var context = new HttpContextAccessor();
var principal = context.HttpContext.User;
if (null == principal)
        return null;
var id = principal.FindFirstValue(ClaimTypes.NameIdentifier);
然后将您的行动方法“AllProducts”更新为

[HttpGet]
公共异步任务AllProducts()
{
var context=新的HttpContextAccessor();
var principal=context.HttpContext.User;
if(null==主体)
返回null;
var userid=principal.FindFirstValue(ClaimTypes.NameIdentifier);
var All=await_context.Product.where(p=>p.id==userid.toListSync();
返回Ok(全部);
}

也许您应该向我们展示如何在当前用户登录时存储有关其ID的信息。是的,我忘记了,我正在使用存储在网站本地存储中的令牌如何发送此令牌?是JWT吗?通常情况下,项目的身份验证机制在哪里?是的,我正在使用JWT
[HttpGet]
public async Task<IActionResult> AllProducts()
{
    var context = new HttpContextAccessor();
            var principal = context.HttpContext.User;
            if (null == principal)
                return null;
            var userid = principal.FindFirstValue(ClaimTypes.NameIdentifier);

    var All = await _context.Product.where(p=>p.id==userid).ToListAsync();
    return Ok(All);
}