<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    探索與發(fā)現(xiàn)

    研究java技術(shù)

      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      83 隨筆 :: 0 文章 :: 109 評(píng)論 :: 0 Trackbacks
    SPSecurity.RunWithElevatedPrivileges(delegate()
    {
    // implementation details omitted
    });

    可以提升代碼的運(yùn)行權(quán)限,實(shí)現(xiàn)模擬管理員身份的功能。

    在RunWithElevatedPrivileges中不要使用 SPContext.Current.Web,SPContext.Current.Site,SPControl.GetContextWeb(HttpContext.Current) 之類的根據(jù)當(dāng)前上下文得到當(dāng)前的Web或者Site,根據(jù)這些方法得到的所有對(duì)象(包括從根據(jù)這些對(duì)象得到的List,ListItem等等對(duì)象)都是以 當(dāng)前網(wǎng)站登錄用戶權(quán)限運(yùn)作的,即使是在RunWithElevatedPrivileges其運(yùn)作權(quán)限也不會(huì)是管理員。

    所以,如果要真正讓在RunWithElevatedPrivileges中的代碼以管理員權(quán)限正常運(yùn)作的話,必須重新初始化相應(yīng)的對(duì)象,比如:

    SPSecurity.RunWithElevatedPrivileges(delegate()
    {
    using (SPSite mySite = new SPSite(SPContext.Current.Site.Url))
    {
    Response.Write(mySite.RootWeb.CurrentUser.LoginName);
    }
    });
    以上mySite.RootWeb.CurrentUser.LoginName返回的是管理員的登錄帳號(hào)。
    但是如果按之前所說使用SPContext:
    SPSecurity.RunWithElevatedPrivileges(delegate()
    {
    Response.Write(SPContext.Current.Web.CurrentUser.LoginName);
    });

    這時(shí)候即使在提升權(quán)限的范圍內(nèi)運(yùn)行,得到的也是當(dāng)前網(wǎng)站登錄帳戶名,而不是管理員登錄帳號(hào)

    public class DemoHandler : SPItemEventReceiver //繼承SharePoint數(shù)據(jù)條目事件監(jiān)控類
    {
        
    public override void ItemAdded(SPItemEventProperties properties)  //重載ItemAdded函數(shù),監(jiān)控新建列表?xiàng)l目事件
        {
             SPSecurity.RunWithElevatedPrivileges(
    delegate()      //用此方法模擬管理員賬戶運(yùn)行此事件處理程序
            {
                
    using (SPSite site = new SPSite(properties.SiteId))    //用此方法的話就不用dispose()了
                {
                    
    using (SPWeb web = site.OpenWeb(properties.OpenWeb().ID))  //注意獲得web的方法!!!
                    {
                        
    try
                        
    {
                             SPList list
    = web.Lists[properties.ListId];     //獲得觸發(fā)事件的列表
                             SPListItem item = list.Items.GetItemById(properties.ListItemId);    //獲得觸發(fā)事件的列表?xiàng)l目

                            
    if (!item.HasUniqueRoleAssignments) item.BreakRoleInheritance(false);   //將此條目取消權(quán)限繼承,如果是“false”,則將去除所有權(quán)限,只保留系統(tǒng)賬戶,如果是“true”,則將上一級(jí)權(quán)限復(fù)制過來。
                             SPUser user = web.Users.GetByID(properties.CurrentUserId);    //獲得觸發(fā)此事件的用戶

                             SPRoleAssignment ra
    = new SPRoleAssignment(web.EnsureUser(user.LoginName));   //生成一個(gè)新的角色分配
                             ra.RoleDefinitionBindings.Add(web.RoleDefinitions["讀取"]);    //將此角色分配綁定“讀取”權(quán)限級(jí)別
                             item.RoleAssignments.Add(ra);     //將此新權(quán)限綁定到列表?xiàng)l目上
                         }

                        
    catch (Exception ee)
                        
    {
                         }

                     }


                  }

             }

             );
         }

    }

    posted on 2009-05-13 07:37 蜘蛛 閱讀(872) 評(píng)論(1)  編輯  收藏 所屬分類: 日常瑣事

    評(píng)論

    # re: 提升代碼的運(yùn)行權(quán)限,實(shí)現(xiàn)模擬管理員身份的功能 2009-05-13 07:38 蜘蛛
    給Web添加用戶權(quán)限
    SPSite site = new SPSite("http://siteurl");
    SPWeb web = site.RootWeb;
    SPUser user = web.AllUsers["domain\\userloginname"];
    SPRoleDefinition role = web.RoleDefinitions["Full Control"]; //或者Contribute,Design,Read
    SPRoleAssignment assignment = new SPRoleAssignment(user);
    assignment.RoleDefinitionBindings.Add(role);
    web.RoleAssignments.Add(assignment);

    給List
    list.RoleAssignments.Add(assignment);

    給Item
    item.RoleAssignments.Add(assignment);  回復(fù)  更多評(píng)論
      

    主站蜘蛛池模板: 亚洲精品成人无码中文毛片不卡| 午夜在线免费视频 | 久久精品国产亚洲AV麻豆网站| 国产91在线免费| 两个人的视频高清在线观看免费| 一区二区三区观看免费中文视频在线播放 | 一个人看的免费观看日本视频www 一个人看的免费视频www在线高清动漫 | 日本一区二区三区在线视频观看免费| 亚洲精品视频在线观看视频| 亚洲色欲久久久综合网| 亚洲国产精品激情在线观看| 永久黄网站色视频免费观看| AA免费观看的1000部电影| 亚洲免费网站在线观看| 最近2022中文字幕免费视频| 日本在线免费观看| 成人电影在线免费观看| 久久国产乱子伦精品免费午夜| 色www免费视频| 日本亚洲高清乱码中文在线观看| 最新亚洲精品国偷自产在线| 亚洲免费中文字幕| 亚洲1区1区3区4区产品乱码芒果| 久久精品国产亚洲av高清漫画 | 久久免费精彩视频| 亚洲午夜免费视频| 99爱免费观看视频在线| 97国产在线公开免费观看| 免费黄网站在线观看| 国内永久免费crm系统z在线| 成人黄网站片免费视频| 99视频免费观看| 蜜臀98精品国产免费观看| 91制片厂制作传媒免费版樱花| 95免费观看体验区视频| 91麻豆国产免费观看| 免费专区丝袜脚调教视频| 可以免费看的卡一卡二| 免费看少妇作爱视频| 国产一级高清视频免费看| 波多野结衣一区二区免费视频|