gpt4 book ai didi

c# - .NET 中基于角色的授权,使用 PrincipalPermission 和 SecurityAction.Assert

转载 作者:太空宇宙 更新时间:2023-11-03 14:28:00 26 4
gpt4 key购买 nike

我有一个类归因于

[PrincipalPermission(SecurityAction.Demand, Authenticated = true)]
public class MyProtectedClass { }

这按预期工作,当当前委托(delegate)人未通过身份验证时,调用者将被拒绝访问。在一个特定的场景中,我希望这个逻辑短路......也就是说,调用者不需要进行身份验证。实现这一点的一种方法当然是用一个新的线程重置线程的 CurrentPrincipal,其 Identity 的 IsAuthenticated 属性为真...

但是,我认为我应该能够通过让调用者 Assert 来完成此操作:

[PrincipalPermission(SecurityAction.Assert, Authenticated = true)]
public class MyExemptedCallerClass { }

这不会产生预期的效果,但是 MyExemptedCallerClass 中的方法仍然会抛出异常,试图实例化 MyProtectedClass

有什么想法吗?是否有其他/更好的方法来完成此任务?

谢谢。

最佳答案

这里有一些想法:

  1. 将 PrincipalPermission 属性放在您希望保护的方法上,而不是类上。
  2. 如果一段代码需要由经过身份验证的用户和未经身份验证的用户运行,那么它可能不属于 MyProtectedClass。也许它属于 MyUnprotectedClass,它只能在你上面提到的一个特定场景中被实例化。经过身份验证的客户端仍然可以通过调用 MyProtectedClass 上的外观方法来访问 MyUnprotectedClass 中的代码。

关于c# - .NET 中基于角色的授权,使用 PrincipalPermission 和 SecurityAction.Assert,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3384059/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com