Protexendo Views SharePoint List / Documento biblioteca parece (tipo de) Posible con jQuery

Este é outro post no meu en curso serie de uso jQuery co SharePoint.
Se queres saber máis sobre jQuery, Eu recomendo altamente: jQuery en Acción por Bear Bibeault e Katz Yehuda.

Unha das primeiras cousas que eu pensaba, unha vez comece a xogar con jQuery, was whether we could use it to secure a SharePoint view. The answer is “no” (ou polo menos, Non estou dicindo que é posible). Con todo, 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: Fácil e rápida: Crea a túa propia Sandbox jQuery para SharePoint.

Para "garantir" unha visión, Siga estes pasos:

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

    Isto é o que parece cando non está "garantido":

    image

  2. Engadir unha web Part do Editor de páxina da visión a usar o truco descrito no artigo sandbox (i.e. engadir "pageview = Shared&ToolPaneView = 2 "para a URL).
  3. Figure out your SharePoint _spUserId by following these crazy steps, crer ou non:
    1. Entrar no seu ambiente SharePoint.
    2. Na caixa de enderezo do navegador, tipo: "Javascript:alertar(_spUserId ").
    3. Anota o resultado (é "13" no meu caso).

      image

  4. Engadir o javascript despois da súa CEWP na visualización de código:

    <guión
        "Text / javascript"
        src =".. / .. / JQuery 20Library/jquery-1.3.2.min.js%">
    </guión>
    
    <tipo script ="Text / javascript">
      $(función() {
    
        alertar(_spUserId);
    
        foi theSecuredView = $('Iframe[FilterLink * = 20View% seguro]');
    
        se ((theSecuredView.length > 0) && (_spUserId == 13))
          $('Iframe[FilterLink * = 20View% seguro]').principal().principal().principal().html("<tr bgcolor = vermello><td>Ningún punto de vista para ti!</td></tr>");
      });
    
    </guión>
    

Eu incluín que alerta(_spUserId) liña alí para demostrar como esa non é realmente un "asegurar" unha visión, but simply making it more difficult to see. More on that in a moment.

Basicamente, 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, andamos a Don a un <TR> día (que eu descubrir a través da visualización de orixe e rastreá-lo) e, a continuación, substituíndo a etiqueta TR coa miña mensaxe. Eu realmente non sei como iso é robusto (Eu son moi sospeitoso, de feito), but it worked in my sandbox. If I find a better way, Vou bloguear sobre o tema. Este é o resultado:

image

Clic no botón Aceptar e os datos son substituídos por unha mensaxe vermello gran:

image

Como pode dicir, the way I’ve implement this “security” solution is to allow the web part to render itself. After it finishes, Eu substituír o seu contido coa miña "visión Non para ti!"Mensaxe.

A pesar do feito de que non é realmente un "seguro" vista, é potencialmente útil e con algún traballo intelixente, it may eventually be securable in a more formal sense. The fundamental issue is that the client is getting all the data and then, só despois de que recibe os datos, it wipes it out. If the client is getting the data, un usuario intelixente pode impedir que o jQuery de correr en todo e ver o que el / ela quere ver.

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, pero eu vexo algunhas cousas boas escrito sobre este tema, polo que estou esperanzas de que hai unha boa resposta para o problema.

A lista de puntos de vista propios deben ser aparadas, if possible. I haven’t tried to figure that out. I assume it’s possible, pero non resolve realmente o problema de seguridade fundamental, porque alguén aínda podería só escribir o URL da visión que eles queren (no caso de que sabían que). Con todo, 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. Ás veces, que é bo o suficiente.

Con sorte, Eu terei máis para escribir sobre este tema ao longo do tempo.

</final>

Rexístrate para o meu blog.

Siga-me no Twitter http://www.twitter.com/pagalvin

Etiquetas do del.icio.us: ,,

Deixe unha resposta

Enderezo de correo electrónico non será publicado. Os campos obrigatorios están marcados *