В настоящее время я работаю с идентификатором CRUD. Но я могу взломать это. Я пытаюсь сделать так, чтобы вы могли ТОЛЬКО удалять, если вы вошли в систему.Запретить пользователям не удалять, если не войти в систему
Я попытался добавить if (User.Identity.IsAuthenticated)
Но это не работает, он отправляет меня на страницу входа после того, как вы ввели страницу удаления. Это мой контроллер:
public ActionResult _RemoveItems()
{
var Items = db.CreatePosts.ToList();
return PartialView(Items);
}
[HttpPost]
public ActionResult _RemoveItem(int Id)
{
if (HttpContext.User.Identity.IsAuthenticated)
{
CreatePost CreatePost = db.CreatePosts.Find(Id);
if (CreatePost != null)
{
db.CreatePosts.Remove(CreatePost);
db.SaveChanges();
}
}
return RedirectToAction("Index", "Manage");
}
И это мое удаление
@Html.ActionLink("Slet", "_RemoveItem", "Home", new { @id = item.Id }, new { @class = "btn btn-danger" })
Что я делаю неправильно, так как я не могу сделать так, что вам нужно войти в систему, прежде чем вы можете зайти на страницу _RemoveItem
Если ссылка существует в вашем * представлении *, то создается впечатление, что опция удаления разрешена, если она не вошла в систему. Из того, что вы опубликовали, не похоже, что у них будет возможность delete, но он перенаправит их обратно на страницу индекса без объяснения того, что произошло. Я не думаю, что вы можете запретить пользователю входить в контроллер удаления (без создания фильтра), но вы можете запретить им выполнять содержимое кода действия, если они не вошли в систему, но «Identity.IsUserAuthenticated» должен сделать трюк. –
Проблема в том, что это не так почему? Я не знаю. Я неправильно сделал это неправильно, но где он должен быть помещен, чем, я не знаю. –
Как и в стороне, ваше имя метода [HttpGet] - это _RemoveItem, а ваше имя метода [HttpPost] - _RemoveItems. – nocturns2