Dette er en anden post i mit igangværende serie om hvordan man bruger jQuery med SharePoint.
Hvis du ønsker at lære mere om jQuery, Jeg kan varmt anbefale: jQuery i aktion af Bjørn Bibeault og Yehuda Katz.
En af de første ting jeg troede, Når jeg begyndte at lege med jQuery, var, om vi kunne bruge det til at sikre en SharePoint-visning. Svaret er "nej" (eller i det mindste, Jeg påstår ikke det er muligt). Dog, Det er bestemt muligt at gøre det vanskeligt for folk at se en bestemt visning.
Jeg startede med min sandkasse miljø, når du arbejder på det. Jeg skrev om dette miljø her: Hurtig og nem: Opret din egen jQuery sandkasse til SharePoint.
Til at "sikre" en visning, Følg disse trin:
- Oprette en visning, der skal sikre. Jeg gjorde det, og kaldte det "Sikret Se".
Dette er hvad det ser ud, når det ikke er "sikret":
- Føje webdelen Indholdsredigering til visningens side benytter den nummer beskrives i artikel i sandkassen (dvs. tilføje "sidevisning = Shared&ToolPaneView = 2 "til URL-adressen).
- Finde ud af din SharePoint-_spUserId ved at følge disse skøre trin, tro eller ej:
- Log ind på dit SharePoint-miljø.
- I webbrowserens adressefelt, type: "javascript:alarm(_spUserId").
- Post resultatet (Det er "13" i mit tilfælde).
- Tilføj den følgende javascript til din CEWP i kodevisning:
<script type ="text/javascript"
src =".. /.. /jQuery Library/jQuery-1.3.2.min.js">
</script>
<script type ="text/javascript">
$(funktion() {
alarm(_spUserId);
varians theSecuredView = $(' iframe[FilterLink * = sikrede % 20View]');
Hvis ((theSecuredView.length > 0) && (_spUserId == 13))
$(' iframe[FilterLink * = sikrede % 20View]').forælder().forælder().forælder().HTML("<TR bgcolor = rød><TD>Nogen mening for dig!</TD></Tr>");
});
</script>
|
Jeg har inkluderet denne alarm(_spUserId) Line derinde at vise hvordan det ikke virkelig en "sikring" udsigt, men blot gør det sværere at se. Mere om det i et øjeblik.
Dybest set, jQuery er på udkig efter en iFrame på den side, der har en attribut, der indeholder "Sikret % 20View" i sin værdi. Når den finder det, vi kontrollere, hvis den aktuelle bruger er "13". Hvis det er, Vi vandrer op DOM til en <TR> Tag (som jeg regnede af gennemsyn kilde og sporing af det) og derefter erstatte TR mærke med min besked. Jeg ved virkelig ikke hvor robust er (Jeg er meget mistænkelige, Faktisk), men det virkede på min sandbox. Hvis jeg kan finde en bedre måde, Jeg vil blog om det.. Dette er resultatet:
Jeg klikker på knappen OK og data, der er erstattet med en stor rød besked:
Som du kan fortælle, den måde jeg har gennemføre denne "" sikkerhedsløsning er at tillade webdelen for at gøre sig selv. Når den er færdig, Jeg overskrive indholdet med min "ingen mening for dig!"besked.
Trods det faktum, at det ikke virkelig en "sikret" "Se, Det er potentielt nyttige og med nogle kloge arbejde, Det kan i sidste ende være securable i en mere formel forstand. Det grundlæggende spørgsmål er, at klienten bliver alle data og derefter, kun når det får dataene, det tørrer det. Hvis klienten er at få data, en klog bruger kan forhindre jQuery i at køre overhovedet og se, hvad han/hun ønsker at se.
Der er andre ulemper. Denne "sikkerhed" tilgang er baseret off en _spUserId. Vi ønsker at virkelig sikker baseret på den fulde SharePoint-sikkerhedsmodel, eller i det mindste af brugernavnet. Der bliver gradvist hårdere, men jeg ser nogle gode ting skrevet om dette emne, så jeg håber der er et godt svar på problemet.
Listen over visninger, sig burde være trimmet, Hvis det er muligt. Jeg har ikke prøvet at finde ud. Jeg formoder det er muligt, men ikke virkelig løse det grundlæggende sikkerhedsproblem, fordi nogen kunne stadig bare Skriv Webadressen på den visning, som de vil (Hvis de vidste det). Dog, trimning giver mening. Det er en god usability funktion og det hjælper til at sløre ting. Hvis slutbrugeren ikke ved at se begivenheden eksisterer, de vil ikke sandsynligvis forsøge at bruge det. Undertiden, Det er godt nok.
Med lidt held, Jeg vil have mere at skrive om dette emne over tid.
</slutningen>
Abonner på min blog.
Følg mig på kvidre på http://www.twitter.com/pagalvin