2009-11-15 88 views
2

我们得到我们新的MVC项目离地面,并试图(通过操作过滤器最好),以解决身份验证和授权的担忧。我们的角色将作为AD组(已经为我们确定)出现,因此我们所需要做的就是读取用户所在的组(来自标识)。如果您在其中一个组中,则认为您已通过身份验证,并且适当的授权取决于操作/控制器(某些角色可以执行某些操作)。使用自定义会员供应商有没有实际好处?有没有一种方法可以进行全局身份验证(因为我们使用的是集成安全性,没有登录信息,如果您没有进行身份验证,则无法访问任何页面),因此我们不必每次都在身份验证标签上控制器?有人可能有链接的示例实现吗?认证/授权的ASP.NET MVC项目

回答

4

使用自定义成员资格提供程序对 有实际好处吗?

是的。我发现默认的membeship提供者不适合大多数情况下我们的需求。
老实说,使用它比处理非常简单的定制工作更痛苦。
这并不意味着你不应该使用身份,只需插入身份并继续使用它。

有没有一种方法,我可以在全球 身份验证(因为我们使用的 集成的安全性,也没有登录 如果 你没有权威性,你不能访问任何页面),所以我们止跌”没有 将[Authenticate]标签放在每个 控制器上?

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

另一件事是,可能不同的控制器需要不同的角色,所以在这种情况下,你需要应用[授权(角色=“A,B,C,d”)]的每一个。

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

无法发布适合您的示例(在NDA下)。但是根据你所描述的,你确实需要做的事情很少。只需应用[Authenticate]属性即可。

0

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

我第二基地控制器的德米特里的想法。一旦您通过AD验证用户,您可以将其组名写入cookie中,然后在基本控制器中读取它。你可以把你的组角色映射放在一个XML文件或其他东西中。我这样做:在基本控制器中,我重写了OnActionExecuting方法,并在那里找出他们要求的动作和控制器,然后根据缓存的XML角色映射对其进行检查,并且如果允许用户那么我让方法继续,否则,我将它们重定向到某处。