1739000230
2025-02-07 08:48:00
今日、私はこの質問に困惑しました エピソーバーCMS 12のファイルアップロード許可を処理するためのソリューション12、そしてそのための簡単な解決策があります
editsecurity.aspxを使用すると便利ですが、兄弟のウェブフォームパーツでCMS 12で削除されたため、将来の証拠ではありません。ただし、APIを使用することで簡単にそれを補うことができます。これは、長い間留まることを目的としています。さらに良いことに、これは自動的かつ繰り返し行うように設定できます。小さな秘密はです IContentSecurityRepository これは、editsecurity.aspxがフードの下で使用されるものです。
コンテンツのアクセス権を設定するには、これが必要なものです
var contentlink = new ContentReference(100);
var content = _contentRepository.Get(contentlink);
if (content is IContentSecurable securable)
{
var descriptor = securable.GetContentSecurityDescriptor();
descriptor.Clear();
descriptor.AddEntry(new AccessControlEntry("Everyone", AccessLevel.Read, SecurityEntityType.Role));
descriptor.AddEntry(new AccessControlEntry("Author", AccessLevel.Read | AccessLevel.Create | AccessLevel.Edit | AccessLevel.Delete | AccessLevel.Publish, SecurityEntityType.Role));
//any other access rights that you need to set
_contentSecurityRepository.Save(contentlink, descriptor, SecuritySaveType.Replace);
}
最初の2行はデモンストレーションのためのものであり、あまり「自動化」されていません。そこにハードコード化された価値があるか、適切なコンテンツを見つけるために魔法をかけなければならないかもしれません。 (ちょっと注意してください、あなたのコードをサイト間で一貫して動作させたい場合は、必ず使用してください ContentGuid 代わりに、データベースに応じて変更されるContentid)。
コードの残りの部分は非常に自明です。コンテンツが実装されているかどうかを確認します IContentSecurable アクセス権を持つために必要です。次に、既存のアクセス権をクリアし、望ましいものを追加します。最後にそれを保存します SecuritySaveType.Replace 必要な権利のみが存在することを確認するために。
このコードは複数回実行できます(idempotent)。スケジュールされたジョブに追加するか、さらに優れたスタートアップルーチンに追加して、特定のコンテンツの適切なアクセス権を常に持っていることを確認できます。
#方法フォルダーへのアクセスを正しく設定します