如果未登录,请防止用户未删除



我目前正在与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

您可以在方法上方的一行中使用[Authorize]属性:

[Authorize]
public ActionResult _RemoveItems()

这将要求任何访问该方法登录的人,期间。

您还可以向授权属性添加更多参数,以管理允许哪些角色等等。

如:

[Authorize(Roles="SpecialRole, OtherRole")]

在这种情况下,该方法仅允许用户扮演"特殊"角色和/或"其他"角色,或者在两个角色中都可以访问。

如果您想在视图上获取删除按钮消失,则必须做一些额外的工作才能实现:

在显示您的视图的控制器操作中,您是否需要以某种方式通过用户登录(您是否可以在视图中执行此操作,但您不应该这样做)。您可以使用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" }))

it 似乎您已经确保它们已登录,我做出了这个答案,因为这是您根据您对评论的[潜在误解]想要的。

相关内容

  • 没有找到相关文章

最新更新