【发布时间】:2016-04-07 18:29:03
【问题描述】:
为将要访问控制器方法的角色添加授权的最直接方法是以下一种。
[Authorize]
public ActionResult Index() { return View(); }
当然,在直肠区域将每个方法都归因于这样是很痛苦的,因此任何想要保持理智的程序员都添加如下过滤器。
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{ ... filters.Add(new AuthorizeAttribute()); }
现在,问题是当用户获得授权但没有声明任何角色时,他们仍然可以访问这些方法,这迫使我无论如何都要对每个方法使用以下语法。这让我很难过。
[Authorize(Roles = "monkey,donkey")]
public ActionResult Index() { return View(); }
我想知道的是一种添加这种全局过滤器但只允许某些角色的方法。到目前为止,我发现的最佳方法是指定过滤器的属性(一个偷偷摸摸的,因为它在构造函数列表中没有任何相关内容),如下所示。
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{ ... filters.Add(new AuthorizeAttribute { Roles = "monkey,donkey" }); }
- 这是推荐的方法还是有更可靠的方法?
- 如果我只想将过滤器添加到某些方法/控制器,我该如何控制?
- 如何允许匿名访问某些方法/控制器?
【问题讨论】:
标签: c# authorization asp.net-identity owin claims-based-identity