ASP.NET MVC项目的身份验证/授权

时间:2009-11-15 23:47:02

标签: asp.net-mvc authentication authorization

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

2 个答案:

答案 0 :(得分:4)

  

是否有实际利益   使用自定义成员资格提供程序?

是。我发现默认的膜供应商在大多数情况下都不适合我们的需求 老实说,使用它会比使用自定义的更加痛苦,这将非常简单 这并不意味着您不应该使用Identity,只需插入身份并继续使用它。

  

我能否全球化?   验证(因为我们正在使用   集成安全性,没有登录   如果你不能访问任何页面   你不是认证,所以我们不会   将[Authenticate]标签放在每个上面   控制器?

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

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

  

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

无法为您发布现成的示例(在NDA下)。但是根据你的描述,你真的很少需要做。只需应用[Authenticate]属性就可以了。

答案 1 :(得分:0)

  

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

我是Dmitriy关于基本控制器的第二个想法。根据AD对用户进行身份验证后,可以将其组名放在cookie中,然后在基本控制器中读取它。您可以将组角色映射放在XML文件或其他内容中。我这样做:在基本控制器中,我重写OnActionExecuting方法,并在那里我弄清楚他们请求的操作和控制器是什么,然后我根据我缓存的XML角色映射检查它,以及是否允许用户然后我让方法继续,否则,我将它们重定向到某个地方。