Entity framework 如何使用ASP.NET Core、Identity Framework和Entity Framework显示特定用户创建的内容

Entity framework 如何使用ASP.NET Core、Identity Framework和Entity Framework显示特定用户创建的内容,entity-framework,asp.net-core,asp.net-identity,Entity Framework,Asp.net Core,Asp.net Identity,我正在尝试创建一个ASP.NET核心web应用程序,人们可以在其中创建、编辑、删除和查看目标。我能够使用实体框架和身份框架来验证用户,但我想授权/显示该用户专门记录的内容。现在,页面将显示所有用户创建的所有内容 这是目标控制器中的索引方法 [Authorize] // GET: Goals public async Task<IActionResult> Index() { return View(await _context.Goal.ToListAsync()); }

我正在尝试创建一个ASP.NET核心web应用程序,人们可以在其中创建、编辑、删除和查看目标。我能够使用实体框架和身份框架来验证用户,但我想授权/显示该用户专门记录的内容。现在,页面将显示所有用户创建的所有内容

这是
目标
控制器中的索引方法

[Authorize]
// GET: Goals
public async Task<IActionResult> Index()
{
    return View(await _context.Goal.ToListAsync());
}
我读过一些关于普通旧Asp.Net的不同方法,但没有说明Asp.Net核心的最佳实践是什么。我应该使用
LINQ

以下是目标模型:

public class Goal
{
    [Key]
    public int TaskID { get; set; }
    public string UserID { get; set; }
    [Display(Name = "Description")]
    public string Description { get; set; }
    public bool IsSubGoal { get; set; }
    [Display(Name = "Due Date")]
    [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}")]

    public DateTime? DueDate { get; set; }
    [Display(Name = "Created On")]
    [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}")]
    public DateTime CreatedOn { get; set; }
    [Display(Name = "Last Modified")]
    [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}")]

    public DateTime? LastModified { get; set; }
}

UserID
是创建目标时存储用户id的位置。

您需要在LINQ查询中添加一个过滤器,如下所示:

[Authorize]
// GET: Goals
public async Task<IActionResult> Index()
{
    // the instruction below this comment will help to get the Id of the current authenticated user. 
    // Make sure you derive your controller from Microsoft.AspNetCore.Mvc.Controller
    var userId = await _userManager.GetUserIdAsync(HttpContext.User);
    return View(await _context.Goal.Where(g => g.UserID == userId).ToListAsync());
}
[授权]
//获得:目标
公共异步任务索引()
{
//此注释下面的说明将有助于获取当前已验证用户的Id。
//确保从Microsoft.AspNetCore.Mvc.controller派生控制器
var userId=await_userManager.GetUserIdAsync(HttpContext.User);
返回视图(wait_context.Goal.Where(g=>g.UserID==UserID.ToListAsync());
}

我实际上找到了一篇非常好的Microsoft文章,这篇文章可能更完整,因为它包含CRUD的每个部分,以及如何为不同的用户角色设置授权处理程序:
[Authorize]
// GET: Goals
public async Task<IActionResult> Index()
{
    // the instruction below this comment will help to get the Id of the current authenticated user. 
    // Make sure you derive your controller from Microsoft.AspNetCore.Mvc.Controller
    var userId = await _userManager.GetUserIdAsync(HttpContext.User);
    return View(await _context.Goal.Where(g => g.UserID == userId).ToListAsync());
}