ドキュメントライブラリのフォルダに対して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