加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 07:37:39 所属栏目:asp.Net 来源:网络整理
导读:我有三个名为Category,Subcategory和Service的模型.然后,对于每个人,我使用Entity Framework创建了一个控制器,它还为它们创建了视图.因此,我都有单独的创建,删除,编辑,详细信息和索引视图.关键是我还在我的ApplicationUser类中添加了一个属性,用于检查用户是
我有三个名为Category,Subcategory和Service的模型.然后,对于每个人,我使用Entity Framework创建了一个控制器,它还为它们创建了视图.因此,我都有单独的创建,删除,编辑,详细信息和索引视图.关键是我还在我的ApplicationUser类中添加了一个属性,用于检查用户是否为admin.也就是说,我添加了这个属性:

public bool IsAdmin { get; set; }

所以,重点是,我想检查用户是否是管理员,并采取相应的行动.如果用户是管理员,我希望他/她能够查看这些视图,并通过这些视图简单地操纵数据(使用控制器).但是,如果他/她不是管理员,我想显示一条消息,他/她没有权限查看这些页面并更改数据.我怎样才能在MVC中实现它?可能吗?

解决方法

嗯,首先,你会发生这种错误.虽然您可以使用用户类上的属性来实现您想要的功能,但您基本上必须重新实现MVC和Identity已经为您提供的功能.

所以,不要把你带到兔子洞的下方,我会把你拉回来.首先,“admin”状态应该是一个角色.如果用户是管理员,只需给他们一个“管理员”或“管理员”角色或任何你想要的角色.

然后,在您的控制器/操作中,您可以使用Authorize属性并指定可接受角色的列表.例如,以下内容将整个控制器限制为仅具有“Admin”角色的控制器:

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

如果该控制器中存在任何人应该能够访问,登录或未登录的特定操作,您仍然可以保护整个控制器,但在相关操作上使用AllowAnonymous:

[Authorize(Roles = "Admin")]
public class FooController : Controller
{
    [AllowAnonymous]
    public ActionResult UnprotectedAction()
    {
        ...
    }
}

您也可以直接在您的操作上添加Authorize属性:

[Authorize(Roles = "Admin")]
public ActionResult AdminOnlyAction()
{
    ...
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读