.net - 我可以使用属性让 .net 模拟另一个用户吗?

标签 .net attributes impersonation

我熟悉使用以下方式在 .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/

相关文章:

c - 按属性值对结构数组进行排序

wcf - 如何捕获 WCF 服务端点

c# - Phone.Maps- Items 集合在使用 ItemsSource 之前必须为空

.net - 有没有办法用 Dapper 调用存储过程?

c# - 是否存在限制解决方案的访问修饰符?

laravel - 如何在 laravel 4 应用程序中模拟任何用户

c# - 将 QueueBackgroundWorkItem 与用户身份一起使用?

c# - 设置一个匿名类型的只读属性

javascript - 扩展 jQuery 属性选择器

C# 动态属性参数