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;MOSS的权限控制很好很强大的

  提示:没有权限,验证失败!

  最后修改版本:

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的权限控制很弓虽大!

posted @ 2010-08-18 23:49  China2008  阅读(207)  评论(0编辑  收藏  举报