Om SharePoint Lys / Document Library Views te Lyk (soort) Moontlik met jQuery

Dit is nog 'n post in my aan die gang reeks oor hoe om te gebruik jQuery met SharePoint.
As jy wil meer oor jQuery te leer, Ek raai: jQuery in Aksie deur die Bear Bibeault en Yehuda Katz.

Een van die eerste dinge wat ek gedink het, toe ek begin om te speel met die jQuery, was whether we could use it to secure a SharePoint view. The answer is “no” (of ten minste, Ek nie beweer dat dit is moontlik). Egter, it is certainly possible to make it difficult for people to see a particular view.

I started with my sandbox environment when working on this. I wrote about that environment here: Vinnige en maklike: Skep Jou Eie jQuery Sandbox vir SharePoint.

"Veilige" 'n oog, Volg hierdie stappe:

  1. Create a view you want to secure. I did that and called it “Secured View”.

    Dit is hoe dit lyk soos wanneer dit is nie "beskerm":

    image

  2. Voeg 'n redakteur web deel van die oog se bladsy met die truuk in die sandbox artikel beskryf (d.w.z. voeg "Pageview = Gedeelde&ToolPaneView = 2 "na die URL).
  3. Figure out your SharePoint _spUserId by following these crazy steps, glo of nie:
    1. Teken in jou SharePoint omgewing.
    2. In die blaaier se adres veld, tipe: "Javascript:waarsku(_spUserId ").
    3. Teken die resultaat (dit is "13" in my geval).

      image

  4. Voeg die volgende javascript te jou CEWP in die kode oog:

    <script
        "Teks / javascript"
        src ="../../jQuery Library/jquery-1.3.2.min.js">
    </script>
    
    <script type ="Teks / javascript">
      $(funksie() {
    
        waarsku(_spUserId);
    
        was theSecuredView = $("Iframe[FilterLink * = veilige% 20View]");
    
        indien ((theSecuredView.length > 0) && (_spUserId == 13))
          $("Iframe[FilterLink * = veilige% 20View]").ouer().ouer().ouer().html("<tr bgcolor = rooi><td>Geen oog vir jou!</td></tr>");
      });
    
    </script>
    

Ek het ingesluit dat die waarskuwing(_spUserId) lyn in daar is om aan te toon hoe dit is nie regtig 'n "beveiliging" 'n oog, but simply making it more difficult to see. More on that in a moment.

Basies, jQuery is looking for an iFrame on the page who has an attribute that contains “Secured View” in its value. Once it finds it, we check to see if the current user is “13”. If it is, Ons loop die DOM aan 'n <TR> dag (wat ek uitgepluis het deur die lees van die bron en die opsporing) en dan dat die TR tag vervang met my boodskap. Ek weet nie regtig hoe sterk dit is nie (Ek is baie verdagte, in werklikheid), but it worked in my sandbox. If I find a better way, Ek sal daaroor blog. Dit is die resultaat:

image

Ek kliek op die OK knoppie en die data is vervang met 'n groot rooi boodskap:

image

Soos jy kan vertel, the way I’ve implement this “security” solution is to allow the web part to render itself. After it finishes, Ek Oorskryf die inhoud daarvan met my "Geen uitsig vir jou!"Boodskap.

Ten spyte van die feit dat dit nie regtig 'n "veilige" oog, dit is moontlik nuttig en met 'n paar slim werk, it may eventually be securable in a more formal sense. The fundamental issue is that the client is getting all the data and then, net nadat dit kry die data, it wipes it out. If the client is getting the data, 'n slim gebruiker kan die jQuery verhoed loop op almal en sien wat hy / sy wil om te sien.

There are other drawbacks. This “security” approach is based off a _spUserId. We’d want to really secure based on the full SharePoint security model, or at least by user name. That becomes progressively harder, maar ek sien 'n paar goeie dinge wat geskryf is oor hierdie onderwerp, so ek hoop daar is 'n goeie antwoord vir die probleem.

Die lys van die standpunte wat hulle moet geknip word, indien moontlik. I haven’t tried to figure that out. I assume it’s possible, maar nie regtig die fundamentele sekuriteit probleem op te los omdat iemand kon nog net die URL van die oog wat hulle wil tik (as hulle dit geweet het). Egter, trimming makes sense. It’s a good usability feature and it helps to obfuscate things. If an end user doesn’t know that the view event exists, they probably won’t try to use it. Soms, dit is goed genoeg.

Met geluk, Ek sal meer oor hierdie onderwerp te skryf oor 'n tydperk.

</einde>

Skryf in op my blog.

Volg my op Twitter http://www.twitter.com/pagalvin

Laat 'n antwoord

Jou e-posadres sal nie gepubliseer word nie. Verpligte velde gemerk *