Dies ist ein weiterer Beitrag in meinem laufenden Serie zur Verwendung jQuery mit SharePoint.
Wenn Sie, erfahren Sie mehr über jQuery möchten, Ich empfehle: jQuery in Action von Bear Bibeault und Yehuda Katz.
Eines der ersten Dinge, die ich dachte, Sobald ich begann zu spielen um mit jQuery, war, ob wir ihn nutzen könne, um eine SharePoint-Ansicht zu sichern. Die Antwort lautet "Nein" (oder zumindest, Ich behaupte nicht, dass es möglich). Jedoch, Es ist sicherlich möglich, Menschen zu sehen, eine bestimmte Ansicht erschweren.
Ich begann mit meiner Sandbox-Umgebung bei der Arbeit an dieser. Ich schrieb über diese Umgebung hier: Schnell und einfach: Erstellen Sie Ihre eigenen jQuery Sandbox für SharePoint.
Um "eine Ansicht zu sichern", gehen Sie folgendermaßen vor:
- Erstellen einer Ansicht, die Sie sichern möchten.. Ich tat das und nannte es "View gesichert".
Dies ist, wie es aussieht, wenn es nicht "gesichert":
- Die Ansicht-Seite unter Verwendung des Tricks in der Sandbox-Artikel beschrieben fügen Sie ein Inhalts-Editor-Webpart hinzu (dh. Fügen Sie "PageView = Shared&ToolPaneView = 2 "an die URL).
- Ihre SharePoint-_spUserId verrückt folgendermaßen herausfinden, glauben oder nicht:
- Loggen Sie sich in Ihrer SharePoint-Umgebung.
- In den Webbrowser-Adressfeld, Typ: "javascript:Warnung(_spUserId").
- Das Rekordergebnis (Es ist in meinem Fall "13").
- Das folgende Javascript zu Ihren CEWP in der Codeansicht hinzufügen:
<Skript-Typ ="Text/javascript"
Src ="../../jQuery Library/jQuery-1.3.2.Min.js">
</Skript>
<Skript-Typ ="Text/javascript">
$(Funktion() {
Warnung(_spUserId);
var TheSecuredView = $("Iframe[FilterLink * = gesicherte % 20View]');
If ((theSecuredView.length > 0) && (_spUserId == 13))
$("Iframe[FilterLink * = gesicherte % 20View]').Eltern().Eltern().Eltern().HTML("<TR Bgcolor = rot><TD>Keinen Blick für Sie!</TD></TR>");
});
</Skript>
|
Ich habe diese Warnung enthalten.(_spUserId) Linie drin zu demonstrieren, wie dies ist nicht wirklich ein "schützen" einen Blick, aber einfach machen es schwierig, zu sehen. Mehr dazu in Kürze.
Im Grunde, jQuery ist ein iFrame auf der Seite gesucht, die ein Attribut, die verfügt "Secured % 20View" in seinem Wert enthält. Sobald er es gefunden hat, Wir überprüfen, um festzustellen, ob der aktuelle Benutzer ist "13". Wenn es ist, Wir gehen den DOM zu einem <TR> Tag (die ich durch die Anzeige von Quellcode und verfolgen es herausgefunden) und dann das TR-Tag durch meine Nachricht ersetzen. Ich weiß nicht wirklich, wie robust das ist (Ich bin sehr misstrauisch, Tatsächlich), aber es funktionierte in meinem Sandkasten. Wenn ich einen besseren Weg finden, Ich werde darüber blog. Dies ist das Ergebnis:
Ich klicke auf die Schaltfläche OK und die Daten mit einer großen roten Meldung ersetzt:
Wie Sie sagen, der Weg ich habe implementieren ist diese "Sicherheit"-Lösung, das Webpart selbst rendern lassen. Nach Abschluss, Überschreiben Sie seinen Inhalt, mit meiner "keine Sicht für Sie!"Nachricht.
Trotz der Tatsache, dass es nicht wirklich eine "gesicherte" "anzeigen, Es ist potentiell nützlich und einige clevere Arbeit, Es kann schließlich sicherungsfähige Element in einem formalen Sinn sein. Das Grundproblem ist, dass der Client die Daten erhält und dann, erst, nachdem es die Daten abruft, Sie wischt es raus. Wenn der Client die Daten abrufen, ist, ein clever Benutzer kann verhindern, dass die jQuery läuft auf allen und sehen, was er sehen will.
Gibt es andere Nachteile. Diese "Sicherheit"-Ansatz basiert auf einer _spUserId. Wünschen wir uns wirklich sicher auf der Grundlage des vollen SharePoint-Sicherheitsmodells, oder zumindest nach Benutzername. Das wird immer schwieriger, aber ich sehe einige gute Sachen geschrieben zu diesem Thema, Also habe ich die Hoffnung, dass es ist eine gute Antwort auf dieses problem.
Die Liste der Ansichten sich eingekürzt werden sollten, Wenn möglich. Ich habe nicht versucht, das herauszufinden. Ich gehe davon aus, dass es möglich, aber wirklich das grundlegenden Sicherheitsproblem lösen nicht, weil jemand immer noch nur die URL der Ansicht geben könnte, was sie wollen (Wenn sie es wüssten). Jedoch, Trimmen ist sinnvoll. Es ist eine gute Usability-Funktion und es hilft, um Dinge zu verschleiern.. Wenn ein Endbenutzer nicht weiß, dass das Ereignis Ansicht vorhanden ist, Sie werden nicht wahrscheinlich versuchen, es zu benutzen. Manchmal, Das ist gut genug.
Mit etwas Glück, Mehr zu diesem Thema im Laufe der Zeit zu schreiben werde ich haben..
</Ende>
Onnieren Sie meinen Blog ab.
Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin