我正在编写一个MVC应用程序,它有两个分支从一开始就一直在旅行。在路径上使用PIN授权,我使用表单身份验证来限制对代码的此部分的访问。但是,另一条路径将接受AD登录,我需要阻止人们使用URL在分支之间移动。我应该使用自定义路由还是应该创建两个单独的授权属性来限制访问。
由于
答案 0 :(得分:2)
您可以使用角色来处理现有的AuthorizeAttribute。只需将AD授权用户置于特定角色,然后在需要AD登录的路径中设置该控制器/方法的角色以要求AD角色。这需要实现RoleProvider,这看起来有点令人生畏,但实际上并不是那么糟糕。将用户的角色缓存在cookie中,这样您就不必每次都查找它们。这里的优点是,随着应用程序变得更加复杂,这将扩展到其他角色。
或者,您可以扩展现有的AuthorizeAttribute,覆盖OnAuthorization并使用您的自定义版本。此属性可以检查以确保不仅授权请求,而且它具有正确的凭据类型。凭证类型可以在登录时存储在会话中,并从那里为经过身份验证的用户检索。这写起来比较简单,但也不能扩展。