MOSS模拟登录的新发现
在MOSS中模拟登录可以很方便的使用SPSecurity来模拟运行程序池中的用户了。
模拟登录其实是将web.CurrentUser 设置为运行程序池用户。
在使用过程中,我发现:
发现一:如下所示代码
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
即采用SPContent.Current.Site或SPContent.Current.Web来指定site或web是不能实现模拟的目的的。
发现二:只需要将获取web 的代码包含在SPSecurity.RunWithElevatedPrivileges中即可。
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
这里就要追寻模拟登录的原理了.SPSecurity.RunWithElevatedPrivileges将SPWeb.CurrentUser设为运行程序池账户了.如果不是New的一个网站对象,则不法为SPWeb.CurrentUser赋值.
这也就是为什么一不行,而二可以的原因.