EventHandler에서 사용자 권한을 높이는 방법(아날로그 관리자 권한)

4191 단어 handler
작업 흐름이나 이벤트Handler에서 관리자 권한을 모의하여 프로그램을 통해 목록 항목의 권한을 사용자 정의할 수 있도록 합니다.
작업 흐름에서 다음과 같은 코드로 권한을 향상시킬 수 있습니다. (다음 코드는 목록 항목을 끊는 권한입니다. 관리자를 제외하고는)
SPListItem item = workflowProperties.Item;

        SPSecurity.RunWithElevatedPrivileges(delegate()      //                    
        {
            using (SPSite site = new SPSite(workflowProperties.SiteId))    //         dispose() 
            {
                using (SPWeb web = site.OpenWeb(workflowProperties.WebId))  //    web   !!!
                {
                    try
                    {
                        if (!item.HasUniqueRoleAssignments) item.BreakRoleInheritance(false);   //          ,   “false”,        ,       ,   “true”,           。
                    }
                    catch (Exception ex)
                    {

                    }
                }

            }
        });

그러나 EventHandler에서 상기 코드를 그대로 사용하면 목록 항목의 item 실례를 호출하여 조작할 때(예를 들어 item.BreakRoleInheritance) "권한이 없음"을 알립니다.근본적인 원인은 item 실례가 RunWith Elevated Privileges 코드 세그먼트에서 실례화되지 않았기 때문이다.즉, item은 다음과 같이 RunWithElevatedPrivileges에서 실례화되어야 합니다.
SPSecurity.RunWithElevatedPrivileges(delegate()      //                    
        {
            using (SPSite site = new SPSite(properties.SiteId))    //         dispose() 
            {
                using (SPWeb web = site.OpenWeb(properties.OpenWeb().ID)) //    web   !!!
                {
                    try
                    {
                        SPList list = web.Lists[properties.ListId];
                        SPListItem item = list.Items.GetItemById(Convert.ToInt32(properties.ListItemId));
                        //SPListItem item = properties.ListItem.ID;
                        //      
                        if (!item.HasUniqueRoleAssignments) item.BreakRoleInheritance(false);   //          ,   “false”,        ,       ,   “true”,           。
                    }
                    catch (Exception ex)
                    {

                    }
                }

            }
        });

에서

좋은 웹페이지 즐겨찾기