2009-08-04 131 views
2

我正在写一个MVC应用程序,它有两个分支从一开始就沿着右转。在路径授权与PIN,我正在使用表单身份验证来限制访问此代码的这一部分。但是,其他路径将接受AD登录,我需要阻止人们使用URL在分支之间移动。我应该使用自定义路由还是应该创建两个单独的授权属性来限制访问。MVC路由与授权/授权标记

感谢

回答

2

你可以使用角色与现有AuthorizeAttribute处理这个问题。只需将您的AD授权用户设置为特定角色,然后在需要AD登录的路径中为该控制器/方法设置角色以要求AD角色。这将需要实施一个RoleProvider,看起来有点令人生畏,但实际上并不是那么糟糕。将用户的角色缓存在cookie中,这样您就不必每次都查看它们。这样做的好处是,随着应用程序变得越来越复杂,这将扩展到其他角色。

或者,您可以扩展现有的AuthorizeAttribute,覆盖OnAuthorization并使用您的自定义版本。该属性可以检查以确保请求不仅被授权,而且它具有适当的凭证类型。证书类型可以在登录时存储在会话中,并从那里为经过验证的用户进行检索。这写起来很简单,但不能很好地扩展。