Попытка выбросить страницу с ошибкой, если пользователь пытается манипулировать URL-адресом для просмотра колоды, которая ему не принадлежит.
Таким образом, когда карта добавляется в таблицу колод, идентификатор текущего пользователя добавляется к таблице вместе с картой.
Здесь я получаю идентификатор пользователя, а затем сравниваю его с идентификатором свойства userId в колоде.Если текущий идентификатор пользователя не совпадает, я хочу добавить страницу с ошибкой, как показано ниже.
Это не работает.есть идеи?Когда я отлаживаю, он говорит, что item currentUserId и item.UserId имеют одинаковое значение, даже когда я использую URL для перехода к другой колоде, которая им не принадлежит
Мой контроллер:
public ActionResult Details(int id)
{
var currentUserId = User.Identity.GetUserId();
var deck = _context.Decks.SingleOrDefault(d => d.id == id);
if (deck == null)
return HttpNotFound();
var userDecks = _context.Decks.Where(u => u.UserId ==
currentUserId);
foreach (var item in userDecks)
{
if (currentUserId != item.UserId)
{
return View("Error");
}
}
return View(deck);
}
Моя модель для справки:
public class Deck
{
public int id { get; set; }
public string Name { get; set; }
public string Notes { get; set; }
[DisplayName("Card")]
public virtual List<Card> Card { get; set; }
public string UserId { get; set; }
}