我目前正在与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
答案 0 :(得分:2)
您可以在方法上方的一行中使用[Authorize]
属性:
[Authorize]
public ActionResult _RemoveItems()
这将要求访问该方法的任何人登录,期间。
您还可以向Authorize属性添加更多参数,以管理允许的角色等等。
如:
[Authorize(Roles="SpecialRole, OtherRole")]
在这种情况下,该方法仅允许“特殊角色”中的用户使用。角色和/或其他角色'角色,或两个角色都有权访问。
答案 1 :(得分:0)
如果您试图让视图中的删除按钮消失,那么您将不得不做一些额外的工作来实现这一目标:
在显示您的视图的控制器操作中,如果用户已登录,您需要以某种方式通过(您可以在您的视图中执行此操作,但您不应该这样做)。您可以使用ViewBag轻松完成此操作,或修改您的模型以包含属性,无论哪种方式最适合您。
[HttpGet] public void Index() {
ViewBag.IsLoggedIn = HttpContext.User.Identity.IsAuthenticated;
}
在您看来,
@(ViewBag.IsLoggedIn == false ? "" : Html.ActionLink("Slet", "_RemoveItem", "Home", new { @id = item.Id }, new { @class = "btn btn-danger" }))
似乎您已经确定他们已登录并且我做出了这个答案,因为根据[我对您的评论的潜在误解],这就是您想要的样子。