6

何か足りないものがないか知りたいです。方法は次のとおりです。SPFolderの場合、関連付けられたアイテムの権限(SPFolder.Item)を変更します。したがって、SPFolder権限の管理は、SPListItem権限の管理に要約されると思います。SPListItemの場合、ロールの継承を最初に中断してSPListItem.BreakRoleInheritance()から、RoleAssignmentsコレクションでロールを追加および削除します。

RoleAssignmentsが(継承以外の)SPListItemのアクセス許可を管理する唯一の方法であり、ロールなしで個々のアクセス許可を管理する方法があるのだろうか。EffectiveBasePermissionsプロパティもありますが、よくわかりません。

したがって、問題は、RoleAssignmentsコレクションとは別にSPListItem権限を管理する他の方法(継承以外)があるかどうかです。

@Edit:AllRolesForCurrentUserもありますが、RoleAssignmentsプロパティから同じ情報を取得できると思いますので、これは便宜上のものです。

@編集: Floが彼の回答で述べているように、設定に問題があります

folder.ParentWeb.AllowUnsafeUpdates = true;

そしてBreakRoleInheritance、「false」の引数を使用して(つまり、親オブジェクトの権限をコピーせずに)使用します。

folder.Item.BreakRoleInheritance(false);

BreakRoleInheritance安全でない更新を許可した後は、期待どおりにGETリクエストで機能しません。おそらく、メソッドAllowUnsafeUpdatesは「false」にリセットされます。

これについて私が知っている回避策の1つは、BreakRoleInheritance(true)の後で、次のように、継承されたアクセス許可を手動で削除することです。

folder.Item.BreakRoleInheritance(false);
while(folder.Item.RoleAssignments.Count > 0) {
    folder.Item.RoleAssignments.Remove(0);
}

ありがとう!

4

2 に答える 2

3

BreakRoleInheritance()メソッドを使用する場合も、この投稿は興味深いものになります。これは、BreakRoleInheritance(false)を使用するときに発生する可能性のある問題に関するものです。

于 2008-11-27T11:03:20.807 に答える
3

あなたはそれをかなり正しく持っています。RoleAssignments は、パーミッションを直接管理するための唯一のメカニズムだと思います。これは、その方法の簡単な例を示す投稿です。さらに複雑なことをしたときにも、これらの2 つの 投稿を使用しました。

于 2008-11-19T17:06:48.890 に答える