我在整个应用程序中都有以下模式,使用模拟来创建服务器对象以检索数据。
public ActionResult Index(){
Index model = new Index();
using (new Impersonation("domain", "username", "password")){
Server server = new Server("serverInstance");
model.ApplicationList = server.GetApplications();
model.Details = server.GetDetails();
}
}
我想知道这是否可以转换为包装函数。所以它可以通过以下方式调用
SecureManager.PerformOperation("domain", "username", "password", server => server
{
server.GetApplications();
server.GetDetails();
....
});
目标是仅在Impersonation块中使用Server对象。
答案 0 :(得分:1)
是的,你可以这样做。
Server leakedServer = null;
SecureManager.PerformOperation("domain", "username", "password",
server =>
{
leakedServer = server;
....
});
leakedServer.GetApplications();
但它不会真正解决“仅使用Impersonation块中的Server对象”,因为该对象很容易被“泄露”出lambda:
reachability.h