在ASP.NET中,检查模型对象的所有权是很重要的,以确保只有授权的用户可以访问和修改特定的模型对象。以下是一个解决方法,包含代码示例:
public class MyModel
{
public string OwnerId { get; set; }
// other properties
}
using Microsoft.AspNetCore.Identity;
public class MyController : Controller
{
private readonly UserManager _userManager;
public MyController(UserManager userManager)
{
_userManager = userManager;
}
public async Task Edit(int id)
{
// 获取当前用户
var currentUser = await _userManager.GetUserAsync(User);
// 根据ID从数据库中获取模型对象
var model = await _dbContext.Models.FirstOrDefaultAsync(m => m.Id == id);
// 检查权限
if (model == null || model.OwnerId != currentUser.Id)
{
return NotFound();
}
// 允许编辑
return View(model);
}
}
在上述代码示例中,我们首先在模型类中添加了一个OwnerId属性,用于存储模型对象的所有者ID。然后,在控制器中,我们使用UserManager
来获取当前用户的ID。接下来,我们从数据库中获取要编辑的模型对象,并检查模型对象的OwnerId是否与当前用户的ID匹配。如果不匹配,我们返回一个404错误。如果匹配,我们允许用户编辑模型对象。
通过这种方式,我们可以确保只有授权的用户可以访问和修改特定的模型对象。这是ASP.NET中检查模型对象所有权的最佳做法之一。
下一篇:ASP.Net最小API