我熟悉.NET冒充帳戶使用:我可以使用屬性使.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() >
使框架在運行doStuff()
方法時始終模擬getUserWindowsIdentity
返回的用戶標識嗎?
如果在不傳遞參數參數的情況下很容易獲取,那麼屬性類是否可能被編碼以查找標識? – 2010-06-08 19:48:04
是的,但您仍然必須擁有處理該屬性的其他代碼,並且實際上已對其執行了一些操作。作爲一般規則,屬性被用作從其他代碼反射的標記。 調用您的方法的代碼將需要加載和處理屬性,並實際執行模擬。如果您從同一位置調用多個方法,並且每個方法都需要使用不同的預定義憑據運行,那麼我可以看到一些潛在的好處。 – Toby 2010-06-08 20:05:16