在 ASP.Net Core 中,我们可以使用身份验证系统将用户与模型关联起来。以下是一些示例代码来演示如何将用户与模型关联。
首先,在你的模型类中,添加一个名为“ApplicationUser”的导航属性:
public class Book
{
public int Id { get; set; }
public string Title { get; set; }
public string Author { get; set; }
public string Genre { get; set; }
public int PublisherYear { get; set; }
public string ApplicationUserId { get; set; }
public ApplicationUser ApplicationUser { get; set; }
}
接下来,在你的控制器类中,注入 UserManager 和 SignInManager 服务,并在 Action 中调用 SignInManager 的方法,将当前用户与模型关联起来:
public class BookController : Controller
{
private readonly UserManager _userManager;
private readonly SignInManager _signInManager;
public BookController(UserManager userManager, SignInManager signInManager)
{
_userManager = userManager;
_signInManager = signInManager;
}
[HttpPost]
public async Task Create(Book book)
{
if (ModelState.IsValid)
{
var user = await _userManager.GetUserAsync(User);
book.ApplicationUser = user;
_context.Add(book);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
return View(book);
}
}
在上面的代码中,我们首先从 UserManager 中获取当前用户,然后将其放置到新创建的书籍模型的 ApplicationUser 导航属性中。接着,我们将书籍保存到数据库中。
最后,在视图中,我们可以将当前用户的信息显示出来:
Created By: @Model.ApplicationUser.UserName
这样,我们就可以轻松地将用户与模型关联起来,并在需要时获取相应的用户信息。