【问题标题】:Authentication/Authorization of an ASP.NET MVC ProjectASP.NET MVC 项目的身份验证/授权
【发布时间】:2009-11-15 23:47:02
【问题描述】:

我们正在启动新的 MVC 项目,并尝试解决身份验证和授权问题(最好通过操作过滤器)。我们的角色将作为 AD 组(已经为我们确定),所以我们真正需要做的就是读取用户所在的组(从身份)。如果您在其中一个组中,则认为您已通过身份验证,并且适当的授权取决于操作/控制器(某些角色可以做某些事情)。使用自定义会员提供程序有实际好处吗?有没有一种方法可以进行全局身份验证(因为我们使用的是集成安全性,所以没有登录,如果你不是身份验证,你就无法访问任何页面)所以我们不必在每个页面上放置 [Authenticate] 标签控制器?是否有某人可能有链接的示例实现?

【问题讨论】:

    标签: asp.net-mvc authentication authorization


    【解决方案1】:

    是否有实际的好处 使用自定义成员资格提供程序?

    是的。我发现在大多数情况下,默认的成员资格提供程序不符合我们的需求。
    老实说,使用它比滚动您的自定义程序更痛苦,这将非常简单。
    这并不意味着您不应该使用身份,只需插入身份并继续使用它。

    有没有办法让我在全球范围内 验证(因为我们正在使用 集成安全,无需登录 如果你不能访问任何页面 你不是身份验证)所以我们不会有 将 [Authenticate] 标签放在每个 控制器?

    对我来说最好的选择是将 [Authenticate] 应用于基本控制器并从中继承您的控制器。
    当然,您可以编写自定义 HttpHandler/Module 或插入 ControllerFactory。
    但这不值得。

    另一件事是不同的控制器可能需要不同的角色,因此在这种情况下,您确实需要为每个控制器应用 [Authenticate(Roles="a,b,c,d")]。

    是否有示例实现 有人可能有链接吗?

    无法为您发布现成的示例(在 NDA 下)。但从你描述的情况来看,你需要做的真的很少。只需应用 [Authenticate] 属性即可。

    【讨论】:

      【解决方案2】:

      适当的授权取决于操作/控制器(某些角色可以做某些事情)。

      我赞同 Dmitriy 关于基本控制器的想法。一旦根据 AD 对用户进行身份验证,就可以将他们的组名放入 cookie 中,然后在基本控制器中读取它。您可以将您的组角色映射放在 XML 文件或其他文件中。我这样做:在基本控制器中,我重写 OnActionExecuting 方法,在那里我找出他们请求的动作和控制器是什么,然后我根据我缓存的 XML 角色映射检查它,如果用户被允许然后我让该方法继续进行,否则,我将它们重定向到某个地方。

      【讨论】:

        猜你喜欢
        • 2011-03-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-19
        • 1970-01-01
        • 2016-05-29
        • 1970-01-01
        相关资源
        最近更新 更多