【问题标题】:MVC 4 Restrict all actions/controllers unless ADMIN or role/user allowedMVC 4 限制所有操作/控制器,除非管理员或角色/用户允许
【发布时间】:2013-04-28 09:08:52
【问题描述】:

我正在 VS 2010 上开发 MVC 4 Web 应用程序。我想做的是:

  1. 限制对所有用户的访问,除非您自动成为 SUPERADMIN(使用表单身份验证登录)
  2. 如果操作/控制器声明您可以访问特定角色,那么它会授予他们访问权限。例如:

    [AuthorizeFor(Roles = "REVIEWER")]
    public ActionResult Index()
    {
       return View();
    }
    

    在上述情况下,只有具有 SUPERADMIN 或 REVIEWER 角色的用户才能访问此操作。

  3. 我还将使用 WEBAPI,因此我可以将内容推送给第三方,因此任何人都应该可以访问,但他们需要通过带有 hmac 的 url 参数进行身份验证。例如:http://example.com/api/feed/1?appid=BLAH&timestamp=BLAH&hmac=BLAH。简而言之,网站的 API 部分不应使用与其他部分相同的身份验证。

我该如何设置?

我正在构建一个供内部使用的内容管理系统,API 会将我们输入的数据提供给第三方网站/供应商。

【问题讨论】:

    标签: asp.net-mvc content-management-system authorization


    【解决方案1】:

    您可以在 App_Start/FilterConfig.cs 中添加 GlobalFilterCollection:

    public class FilterConfig
    {
        public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
            filters.Add(new HandleErrorAttribute());
            // Applies an Authorize Attribute to each controller so that by default all SUPERADMINS have access you could then add [Authorize(Roles = "REVIEWER"] to individual items.
            filters.Add(new System.Web.Mvc.AuthorizeAttribute() { Roles = "SUPERADMIN" });
        }
    }
    

    在 WebAPI 控制器中,您可以使用 WebAPI 控制器的 [AllowAnonymous] 属性并通过检查 hmac 参数自行处理身份验证。

    【讨论】:

      猜你喜欢
      • 2014-06-16
      • 2019-03-31
      • 2014-11-11
      • 2010-10-16
      • 2021-11-21
      • 1970-01-01
      • 1970-01-01
      • 2016-02-03
      • 2014-07-06
      相关资源
      最近更新 更多