【问题标题】:MVC Windows authentication - authorise(permissions) for entire siteMVC Windows 身份验证 - 整个站点的授权(权限)
【发布时间】:2016-01-14 22:41:58
【问题描述】:

我已经看到 AuthoriseAttribute 可以为每个单独的控制器工作,我想做的是将整个站点权限设置为一个 AD 组,这很容易吗?或者我应该将 authattrib 行复制并粘贴到每个控制器?

谢谢

【问题讨论】:

  • 添加一个全局过滤器,就像这个人在这个问题中演示的那样:stackoverflow.com/questions/11033357/…
  • 在全局过滤器中,我在哪里指定允许哪些 AD 组使用该站点?
  • 如果您有单独的问题,您应该发布它们而不是在 cmets 中提问。但是,由于今天早上碰巧我面前有这个确切的代码,所以您需要做的是从 AuthorizeAttribute 创建一个新的派生属性并覆盖 OnAuthorization 方法以执行您的自定义逻辑。
  • @VladimirBozic 这是一个很棒的帖子,谢谢!我将其添加为书签以供将来参考。

标签: asp.net-mvc authorization


【解决方案1】:

正如@asawyer 提到的,为您的案例使用全局过滤器是一种很好的做法。对于您在评论中的另一部分问题:in the global filter where do i specify what AD groups are allowed to use the site? 您可以在自定义授权属性的OnAuthorization 方法中指定角色,例如:

public class MyAuthAttribute: AuthorizeAttribute
{                
    public override void OnAuthorization(AuthorizationContext filterContext)
    {  
        Roles = 'ad role1, ad role2...'; //Roles is AuthorizeAttribute member
        base.OnAuthorization(filterContext);
    }
}

而不是像这样使用它:

GlobalFilterCollection.Add(new MyAuthAttribute());

在 global.asax 或 w/e else

【讨论】:

    猜你喜欢
    • 2017-05-28
    • 2011-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多