在 Windows Identity Foundation (WIF) 中,有一个名为ClaimsPrincipalPermission
. MSDN 上的文档非常稀少。它指出:
ClaimsPrincipalPermission 表示访问资源所需的权限。ClaimsPrincipalPermission 接受一个表示要访问的资源的字符串和一个表示要对资源执行的操作的字符串。调用 Demand 时,principal 必须具有对指定资源执行指定操作的权限,否则 Demand 会抛出异常。
这很酷。它允许我在函数上设置属性并使其只有授权用户才能调用该函数。我可以毫不费力地使用此功能。
但是,还有另一个问题。我正在开发一个具有许多功能的 Web 应用程序,这些功能只允许某些用户访问。我希望将我的页面编码为仅显示具有登录用户可以访问的功能的页面的链接。
我看到使用 ClaimsPrincipalPermission 执行此操作的唯一方法是执行以下操作:
Dim foo As ClaimsPrincipalPermission foo = New ClaimsPrincipalPermission(resource:="SECRET_FUNCTION", action:="EXECUTE") Try foo.Demand() response.write(Link_To_Execute_Secret_Function) Catch ex As Exception response.write("No access to Secret Function") End Try
我的主管向我明确表示,这种“异常编码”是不可接受的。我确信我可以将这类东西封装在一个小型库中,但我想知道 WIF 打算如何用于此目的。
顺便说一句,我知道 WIF 允许我自动检查对特定网页的访问,但该项目的架构师希望指定要限制的函数名称,而不是网页 URL。
最好的办法是什么?
更新
到目前为止,我发现的最好的事情是通过异常封装编程以减轻后果......