문서 라이브러리의 폴더에서 SPListItem 사용 권한을 조작하려고하지만 보안 상속을 제거하는 것이 아름답게 작동하지만 새로운 사용 권한을 추가 할 수 없습니다.SharePoint RoleAssignment가 추가되지 않음
테스트 목적으로 코드의 슬림화 된 버전을 만들기 위해 최선을 다했습니다. GetListItem 함수는 URL을 기반으로 작업중인 SPListItem을 반환합니다. item.BreakRoleInheritance(False)
잘 작동하고 제대로 상속을 확인하고 모든 사용 권한을 지우고, 나는 또한 True 플래그로 시도하고 모든 원래 사용 권한이 부모로부터 복사 된 것을 확인했습니다.
아래의 코드는 예외를 발생시키지 않으며 내 문서 라이브러리의 폴더에 대한 실제 사용 권한을 확인하고 "뷰어"가 표시되지 않을 때까지 제대로 작동하는 것처럼 보입니다.
코드 :
Dim item As SPListItem = GetListItem(URL)
If item Is Nothing Then
Exit Sub
End If
Dim spGrp = SharePointWeb.SiteGroups("Viewers")
Dim spRole As SPRoleDefinition = SharePointWeb.RoleDefinitions("Read")
Dim roleAssignment As New SPRoleAssignment(spGrp)
roleAssignment.RoleDefinitionBindings.Add(spRole)
SharePointWeb.AllowUnsafeUpdates = True
item.BreakRoleInheritance(False)
item.RoleAssignments.Add(roleAssignment)
item.Update()
SharePointWeb.AllowUnsafeUpdates = False
나는 SPSecurity.RunWithElevatedPrivileges
에 대한 호출이 코드를 포장 시도했지만 그것은 어떤 차이가 없었다. 내 SPSite/SPWeb 개체의 생성은 SPSecurity.RunWithElevatedPrivileges
에 대한 호출로 래핑되며 폴더/etc ...에있는 기존의 코드로 찾기/삭제/업데이트 특성을 실행하는 다른 코드가 있습니다. 단지 권한이 작동하기를 원치 않습니다.
참고 :
- http://moldenco.blogspot.com/2007/05/spsecurityrunwithelevatedprivileges-to.html
- How to give an SPGroup permissions for an SPItem?
- http://blogs.msdn.com/b/joelo/archive/2007/10/05/sharepoint-roles-assignments.aspx