gpt4 book ai didi

asp.net-mvc - 如何限制对 MVC 5 中某些 View 和操作的访问?

转载 作者:行者123 更新时间:2023-12-03 15:06:31 24 4
gpt4 key购买 nike

我有三个模型,分别命名为 Category、Subcategory 和 Service。然后,我使用 Entity Framework 为他们每个人创建了一个 Controller ,它也为他们创建了 View 。因此,对于它们中的每一个,我都有单独的创建、删除、编辑、详细信息和索引 View 。关键是我还在 ApplicationUser 类中添加了一个属性,用于检查用户是否为管理员。也就是说,我添加了这个属性:

public bool IsAdmin { get; set; }

所以,关键是,我想检查用户是否是管理员,并采取相应的行动。如果用户是管理员,我希望他/她能够查看这些 View ,并通过这些 View 简单地操作数据(使用 Controller )。但是,如果他/她不是管理员,我想显示一条消息,表明他/她无权查看这些页面和更改数据。我怎样才能在MVC中实现它?是否可以?

最佳答案

嗯,首先,你的做法是错误的。虽然您可以使用用户类上的属性实现您想要的功能,但您基本上必须重新实现 MVC 和 Identity 已经为您提供的功能。

所以,与其把你带进兔子洞,我要把你拉回来。首先,“admin”状态应该是一个角色。如果用户是管理员,只需为他们提供“管理员”或“管理员”或任何您想称呼的角色。

然后,在您的 Controller / Action 中,您可以使用 Authorize属性并指定可接受的角色列表。例如,以下内容会将整个 Controller 限制为仅具有“管理员”角色的 Controller :

[Authorize(Roles = "Admin")]
public class FooController : Controller

如果该 Controller 中有任何人都应该能够访问的特定操作,无论是否登录,您仍然可以保护整个 Controller ,但使用 AllowAnonymous关于所涉及的行动:
[Authorize(Roles = "Admin")]
public class FooController : Controller
{
[AllowAnonymous]
public ActionResult UnprotectedAction()
{
...
}
}

您也可以只添加 Authorize直接归因于您的操作:
[Authorize(Roles = "Admin")]
public ActionResult AdminOnlyAction()
{
...
}

关于asp.net-mvc - 如何限制对 MVC 5 中某些 View 和操作的访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25343645/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com