你们的潜力,大家的动力!

生活是由思想造成的! 别人笑我太疯癫,我笑他人看不穿。 不见五陵豪杰墓,无花无酒锄作田。

MOSS的权限控制很好很强大的

    出个题目先:
   SPWeb web = SPControl.GetContextWeb(Context); 
   //获取当前站点下的所有子站点
   SPWebCollection subwebs = web.Webs;
  
   foreach(SPWeb wb in subwebs)
   {....}

END
当前用户为普通读者身份!!可以看每个子网站下的子网站的子网站。。。
结果:失败!

 SPSecurity.RunWithElevatedPrivileges(delegate
 {
    SPWeb web = SPControl.GetContextWeb(Context); 
   //获取当前站点下的所有子站点
   SPWebCollection subwebs = web.Webs;
  
   foreach(SPWeb wb in subwebs)
   {....}
 });

还是失败,失败地点:web.Webs;
提示:没有权限,验证失败!

最后修改版本:

 SPSecurity.RunWithElevatedPrivileges(delegate
                {
                    using (SPWeb wb = new SPSite(web.Site.ID).OpenWeb(web.ID))
                    {
                        //获取当前站点下的所有子站点
                        SPWebCollection subwebcol = wb.Webs;

                        for (int i = 0; i < subwebcol.Count; i++)
                        {
                            if (i < subwebupcount)
                            {
                                if (subwebcol[i].DoesUserHavePermissions(SPBasePermissions.Open))
                                {
                                    subleftnav(subwebcol[i], "navLevel2", "navItem", web.ID);
                                    subwebcol[i].Dispose();
                                }
                            }
                        }
                    }
                });

结果:成功!
总结:必须在提升权限下New一个新的Contex上下文,再去干你想干的事情,如上黑体标示,第二个可以不要的!
感慨:MOSS的权限控制很弓虽大!
   
msn: pccai1983@hotmail.com
Phone: 13401081637

posted on 2008-06-18 16:10 pccai 阅读(365) 评论(4)  编辑 收藏 所属分类: MOSS2007

评论

#1楼  2008-06-18 22:30 Windie Chai(笑煞天)      

那么强大都被你突破了,你不是很暴力?   回复  引用  查看    

#2楼 [楼主] 2008-06-19 11:46 pccai      

:)   回复  引用  查看    

#3楼  2008-06-19 15:43 jdxyw2004 [未注册用户]

这个权限控制是什么意思?   回复  引用    

#4楼  2008-06-25 10:32 Michael Zhang      

其实就是使用管理员的权限来读取信息.
impersonate   回复  引用  查看    

Dict.CN 在线词典, 英语学习, 在线翻译