我熟悉使用以下方式在 .net 中模拟帐户:
dim myIdentity as WindowsIdentity = someIdentity
using ctx as WindowsImpersonationContext = myIdentity.Impersonate()
doStuff()
end using
是否可以定义一个 .net 属性,以便我可以编写如下内容:
< runAsUser(someIdentity) > public sub doStuff()
然后让 .net 框架在运行 doStuff()
方法时始终模拟?
更新 好的,有人告诉我这可能是不可能的,因为属性构造函数的参数必须是常量,这将排除传递用户身份的可能性。
让我换个角度问这个问题:
假设有一个函数 getUserWindowsIdentity()
返回与登录用户关联的身份。
然后我可以使用 < runAsLoggedInUser) > public sub doStuff() >
吗?使框架始终模拟 getUserWindowsIdentity
返回的用户 ID在运行 doStuff()
时方法?
最佳答案
不,.NET 框架中不存在这样的魔力。您必须自己编写代码,使用反射来读取属性。该代码看起来很像您已有的代码,只是速度较慢,并且添加了读取属性的代码。
关于.net - 我可以使用属性让 .net 模拟另一个用户吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3000298/