Ich arbeite derzeit mit CRUD in Identität. Aber ich kann das knacken. Ich versuche, es so zu machen, dass Sie NUR löschen können, wenn Sie eingeloggt sind.Verhindern Benutzer nicht zu löschen, wenn nicht angemeldet
Ich habe versucht, indem Sie if (User.Identity.IsAuthenticated)
hinzufügen Aber das funktioniert nicht, es senden Sie mich zur Anmeldeseite NACHDEM Sie die Löschseite eingegeben hatten. Das ist mein Controller:
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");
}
Und das ist mein löschen
@Html.ActionLink("Slet", "_RemoveItem", "Home", new { @id = item.Id }, new { @class = "btn btn-danger" })
Was mache ich falsch, da ich es nicht machen können, so müssen Sie eingeloggt sein, bevor Sie die Seite eingeben _RemoveItem
Wenn der Link in Ihrer * Ansicht * vorhanden ist, dann wird der Eindruck entstehen, dass die Option zum Löschen erlaubt ist, wenn nicht angemeldet. Von dem, was Sie gepostet haben, sieht es nicht so aus löschen, aber es würde sie zurück zur Indexseite umleiten, ohne zu erklären, was passiert ist. Ich glaube nicht, dass Sie den Benutzer daran hindern können, in den Lösch-Controller zu gehen (ohne einen Filter zu erstellen), aber Sie können verhindern, dass sie den Code-Inhalt der Aktion ausführen, wenn sie nicht eingeloggt sind, sondern "Identity.IsUserAuthenticated" sollte den Trick machen. –
Das Problem ist, dass es nicht warum? Ich weiß es nicht. Ich habe es wahrscheinlich falsch gestellt, aber wo es platziert werden sollte, weiß ich nicht. –
Nur als Nebenbemerkung ist der Methodenname [HttpGet] _RemoveItem, während der Methodenname [HttpPost] _RemoveItems lautet. – nocturns2