Я пытаюсь запретить неавторизованным вошедшим в систему пользователям просматривать и редактировать записи других клиентов, но, похоже, они не работают.У меня есть ядро asp.net ApplicationUser, привязанное к каждой созданной категории.Я пытаюсь сопоставить идентификатор текущего пользователя и идентификатор приложения, который хранится в базе данных.
Так что, если другой пользователь должен поместить идентификатор категории в URL, который не совпадает с зарегистрированным в настоящее время ApplicationuserID.Если это не соответствует, то перенаправляет на индекс категории.
Я не знаю, что я делаю неправильно.Я пробовал различные варианты и другие предложения онлайн
// GET: Categories/Edit/5
public async Task<IActionResult> Edit(int? id)
{
var currentUser = await _userManager.GetUserAsync(HttpContext.User);
var Categories = _context.Categories.FirstOrDefault(m => m.ApplicationUserId == currentUser.Id);
if (id == null)
{
return NotFound();
}
if (Categories.ApplicationUserId != currentUser.Id)
{
return RedirectToAction(nameof(Index));
//return View(category);
}
else
{
var category = await _context.Categories.FindAsync(id);
if (category == null)
{
return NotFound();
}
return View(category);
}
}
Httpedit
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Edit(int id, [Bind("CategoryId,StoreId,ApplicationUserId,CategoryName,Description")] Category category)
{
var currentUser = await _userManager.GetUserAsync(HttpContext.User);
var store = _context.Stores.FirstOrDefault(m => m.ApplicationUserId == currentUser.Id);
var categories = _context.Categories.FirstOrDefault(m => m.ApplicationUserId == currentUser.Id);
if (id != category.CategoryId)
{
return NotFound();
}
if (categories.ApplicationUserId != currentUser.Id)
{
return RedirectToAction(nameof(Index));
}
else
{
if (ModelState.IsValid)
{
try
{
category.StoreId = store.Id;
category.ApplicationUserId = currentUser.Id;
_context.Update(category);
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!CategoryExists(category.CategoryId))
{
return NotFound();
}
else
{
throw;
}
}
return RedirectToAction(nameof(Index));
}
}
return View(category);
}
Спасибо