惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Martin Fowler
Martin Fowler
J
Java Code Geeks
博客园 - 【当耐特】
宝玉的分享
宝玉的分享
腾讯CDC
D
DataBreaches.Net
Microsoft Azure Blog
Microsoft Azure Blog
Engineering at Meta
Engineering at Meta
V
V2EX
F
Fortinet All Blogs
MyScale Blog
MyScale Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
T
Tailwind CSS Blog
Jina AI
Jina AI
GbyAI
GbyAI
大猫的无限游戏
大猫的无限游戏
A
About on SuperTechFans
酷 壳 – CoolShell
酷 壳 – CoolShell
爱范儿
爱范儿
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
U
Unit 42
B
Blog
M
MIT News - Artificial intelligence
N
Netflix TechBlog - Medium

博客园 - 山 前

SharePoint中计算值公式函数简介 System.InvalidOperationException: 无法生成临时类(result=1)。 配置爬网能爬PDF文档. 检索 COM 类工厂中 CLSID 为 {.....} 的组件时失败,80070005 sql函数大全 JavaScript对象与数组参考大全 如何创建高性能的索引 如何用fckeditor编辑器上传图片、flash、视频到moss的图片库中 动态调用webservice - 山 前 - 博客园 信息发布webpart——网页编辑器应用攻略 如何在同一任务列表中显示我的任务及我所属组的任务 ASP.NET 生成HTML静态页面实例 彻底弄懂CSS盒子模式之一 DOCTYPE用法详解 寻块心灵净土,遥祭遇难同胞 一个树控件类的实现---打造自己的树控件 通过在 Page 指令或 配置节中设置 validateRequest=false 可以禁用请求验证 Web Service学习 javascript知识
MOSS模拟登录的新发现
山 前 · 2008-11-24 · via 博客园 - 山 前

在MOSS中模拟登录可以很方便的使用SPSecurity来模拟运行程序池中的用户了。

模拟登录其实是将web.CurrentUser 设置为运行程序池用户。

在使用过程中,我发现:

发现一:如下所示代码

            SPSite site = null;
            SPWeb myWeb 
= null;
            SPSecurity.RunWithElevatedPrivileges(
delegate()
            
{
                site 
= SPContent.Current.Site;
                myWeb 
= site.OpenWeb();

            }
);

即采用SPContent.Current.Site或SPContent.Current.Web来指定site或web是不能实现模拟的目的的。

发现二:只需要将获取web 的代码包含在SPSecurity.RunWithElevatedPrivileges中即可。

SPSite site = null;
SPWeb myWeb 
= null;
SPSecurity.RunWithElevatedPrivileges(
delegate()
{
    site 
= new SPSite(SiteURL);
    myWeb 
= site.OpenWeb();
    
//下面对列表或其它进行的更新等操作并不需要放到这里。

}
);
//放到这里都行
//直到释放site,web.CurrentUser都将会是模拟的用户。

这里就要追寻模拟登录的原理了.SPSecurity.RunWithElevatedPrivileges将SPWeb.CurrentUser设为运行程序池账户了.如果不是New的一个网站对象,则不法为SPWeb.CurrentUser赋值.

这也就是为什么一不行,而二可以的原因.