【发布时间】:2009-08-04 12:22:30
【问题描述】:
我正在编写一个 MVC 应用程序,它从一开始就有两个分支。在路径上使用 PIN 进行授权,我正在使用表单身份验证来限制对这部分代码的访问。但是,另一条路径将接受 AD 登录,我需要阻止人们使用 URL 在分支之间移动。我应该使用自定义路由还是应该创建两个单独的授权属性来限制访问。
谢谢
【问题讨论】:
标签: c# asp.net-mvc active-directory routing authorization
我正在编写一个 MVC 应用程序,它从一开始就有两个分支。在路径上使用 PIN 进行授权,我正在使用表单身份验证来限制对这部分代码的访问。但是,另一条路径将接受 AD 登录,我需要阻止人们使用 URL 在分支之间移动。我应该使用自定义路由还是应该创建两个单独的授权属性来限制访问。
谢谢
【问题讨论】:
标签: c# asp.net-mvc active-directory routing authorization
您可以使用 Roles 来处理现有的 AuthorizeAttribute。只需将您的 AD 授权用户放入特定角色,然后在需要 AD 登录的路径中,将该控制器/方法的角色设置为需要 AD 角色。这将需要实现一个RoleProvider,这看起来有些令人生畏,但实际上并没有那么糟糕。将用户的角色缓存在 cookie 中,这样您就不需要每次都查找它们。这样做的好处是,随着您的应用程序变得越来越复杂,这将扩展到其他角色。
或者,您可以扩展现有的 AuthorizeAttribute,覆盖 OnAuthorization 并使用您的自定义版本。该属性可以检查以确保请求不仅被授权,而且它具有正确的凭证类型。凭据类型可以在登录时存储在会话中,并从那里为经过身份验证的用户检索。这更容易编写,但也不能扩展。
【讨论】: