Frage

Ich habe eine Situation, in der ein strikte Berechtigungsanforderungen an einer Liste vorhanden ist, von der ich bereits ein benutzerdefiniertes Formular geschrieben habe. Die Anforderung ist, dass bei der Erstellung, basierend auf Metadaten, nur bestimmte Benutzer Zugriff auf das Lesen und Schreiben des Elements haben.

Mein erster Versuch sollte dies in einem Ereignisempfänger in der Liste eingeben, um sicherzustellen, dass die Berechtigungen aktualisiert werden, wenn der Artikel hinzugefügt wird. Ich setze den Artikel in den Artikel hinzugefügten Ereignis, da während des Artikels hinzugefügt wird, habe ich keinen Weg, um Privilegien zu erheben und eine erhöhte Instanz des Artikels zu erhalten (das ich kenne). Dies führte zu einer unerwünschten Verzögerung, jedoch kurz, zwischen dem Zeitpunkt, an dem der Artikel erstellt wurde, und der Zeit, in der der Code tatsächlich rannte.

Das nächste, was ich ausprobierte, war, die Elementberechtigungen in der Form unmittelbar nach der Erstellung des Elements festzulegen, da ich dann einen ID für den Artikel habe, sodass ich ihn in einem erhöhten Kontext abrufen kann (ich möchte, dass der Artikel sein soll im Rahmen des aktuellen Benutzers erstellt). Dies ist problematisch, denn, sobald dieser Ansatz implementiert wurde, etwa 50% der Zeit, in dem wir einen Fehler in einem Workflow erhalten, der auf dem Element ausgeführt wird, der Sprichwort erstellt: "Der Workflow konnte nicht gestartet werden. Der Workflow kann nicht auf den anzuwendenden Artikel zugreifen, auf den er angewendet wurde. " (Es ist wahrscheinlich erwähnenswert, dass dies ein Nintzex-Workflow ist. p>

Idealerweise möchte ich Berechtigungen für das allererste Artikel-Update (Erstellen) oder während eines ItemAdding-Ereignisses aktualisieren können, aber ich bin nicht sicher, wie Sie dies tun sollen, ohne den gesamten Prozess zu erhöhen, so dass der Artikel dann von erstellt wird das Systemkonto und nicht der Benutzer, der tatsächlich den Artikel erstellt hat.

Welche Optionen habe ich mir zur Verfügung?

War es hilfreich?

Lösung

Die Art und Weise, wie Sie es ursprünglich mit dem ItemAdded-Event hatten, war korrekt.Es ist jedoch nur ein Schritt fehlt - Sie können das Ereignis sofort ausführen, indem Sie es sofort ändern, um synchron anstelle von asynchron zu laufen.

Details, wie Sie den Synchronmodus wechseln-Events-EG-itemupdated-in-sharepoint-2010.aspx "rel=" nofollow "> http://blogs.technet.com/b/stefan_gossner/archive/2011/11/10/1ing-synchronous-Quot-Quot-Events-EG-itemupdated-in-sharePoint-2010.aspx

Andere Tipps

Ein Ansatz, den Sie ausprobieren könnten, ermöglicht die Ermöglichung der Inhaltsgenehmigung in dieser Liste.Dies bedeutet, dass, wenn ein neuer Artikel erstellt wird, in anstehender -status, bis er genehmigt wird.Wenn sich ein Element in dem anstehenden Status befindet, können nur der Urheber des Elements und die Personen, die Berechtigungen zur Verwaltung von Listen und Bibliotheken haben, sie sehen, sofern Sie die folgende Einstellung ausgewählt haben: Wer sollte in dieser Dokumentbibliothek Entwurfselemente sehen?-> Nur Benutzer, die Elemente (und den Autor des Artikels) genehmigen können. Dann können Sie das ursprüngliche Ereignis verwenden, um die Berechtigungen der Datei zu ändern und auch in den genehmigten staat zugegeben.

Ich hoffe, das hilft Ihnen in Ihrem speziellen Szenario.

Sie sollten in der Lage sein, den Benutzer, der den Artikel erstellt hat, nicht identifizieren oder die Änderung in Ihrem Code erstellt hat. generasacodicetagpre.

Identitätserhöhung der Privilegien .

Eventsims Identifikation in SharePoint 2010

Was ich getan habe, um dieses Problem zu umgehen, besteht darin, den Workflow, anstatt den Workflow über die Einstellungen des Workflows zu starten, wir sind "manuell" den Workflow von Code, nachdem die Berechtigungen aktualisiert wurden. generasacodicetagpre.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top