Гэта яшчэ адно паведамленне ў маім бягучыя серыі аб тым, як выкарыстоўваць JQuery з SharePoint.
Калі вы хочаце даведацца больш пра JQuery, Я настойліва рэкамендую: JQuery у дзеянні Мядзведзь па Bibeault і Іегуда Кац.
Адна з першых рэчаў, якія я думаў,, як толькі я пачаў гуляць з JQuery, was whether we could use it to secure a SharePoint view. The answer is “no” (або па крайняй меры, Я не сцвярджаю, што гэта магчыма). Аднак, 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: Хутка і лёгка: Стварыце свой уласны Sandbox JQuery для SharePoint.
"Бяспечныя" выгляд, выканайце наступныя дзеянні:
- Create a view you want to secure. I did that and called it “Secured View”.
Гэта тое, што ён выглядае, калі гэта не "забяспечаны":
- Дадаць вэб-частка рэдактара кантэнту на старонцы выгляд, выкарыстоўваючы трук апісаны ў артыкуле пясочніцы (I.E. дадаць "PageView = Агульная&ToolPaneView = 2 "на URL).
- Figure out your SharePoint _spUserId by following these crazy steps, верыць ці ня:
- Увайдзіце ў сваю суполку SharePoint.
- У адраснай радку вэб-браўзэра, тып: "JavaScript:Апавяшчэнні(_spUserId ").
- Запішыце вынік (гэта "13" у маім выпадку).
- Дадайце наступныя JavaScript ў Вашым CEWP ў рэжыме кода:
<сцэнар
"text/javascript"
SRC ="../../jQuery%20Library/jquery-1.3.2.min.js">
</сцэнар>
<Сцэнар тыпу ="text/javascript">
$(функцыя() {
Апавяшчэнні(_spUserId);
было theSecuredView = $("З даты[FilterLink * = Абаронены 20View%]");
калі ((theSecuredView.length > 0) && (_spUserId == 13))
$("З даты[FilterLink * = Абаронены 20View%]").бацька().бацька().бацька().HTML("<BGCOLOR TR = чырвоны><TD>Ніякай выгляд для вас!</TD></тр>");
});
</сцэнар>
|
Я ўключыў, што папярэджанне(_spUserId) лініі туды, каб прадэманстраваць, як гэта на самай справе не "Абарона" у выглядзе, but simply making it more difficult to see. More on that in a moment.
У асноўным, jQuery is looking for an iFrame on the page who has an attribute that contains “Secured%20View” in its value. Once it finds it, we check to see if the current user is “13”. If it is, мы ідзем уверх па DOM, каб <TR> тэг (які я высвятліў, прагледзеўшы крыніцы і трасіроўку) , А затым замяніць гэты тэг TR з маім паведамленне. Я сапраўды не ведаю, як гэта надзейны (Я вельмі падазрона, на самай справе), but it worked in my sandbox. If I find a better way, Я буду блог аб гэтым. Гэта вынік:
Я націскаю кнопку ОК, і дадзеныя замяняюцца з вялікай чырвонай паведамленне:
Што вы можаце сказаць, the way I’ve implement this “security” solution is to allow the web part to render itself. After it finishes, Я перазапісаць яго ўтрыманне з маёй "Рэжым прагляду не для вас!"Паведамленне.
Нягледзячы на тое, што гэта на самай справе не «абароненай» выгляд, гэта патэнцыйна карысны і з некаторым разумным працы, it may eventually be securable in a more formal sense. The fundamental issue is that the client is getting all the data and then, Толькі пасля таго, як атрымлівае дадзеныя, it wipes it out. If the client is getting the data, разумны карыстальнік можа прадухіліць ад JQuery працуе на ўсё і паглядзець, што ён / яна хоча бачыць.
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, але я бачу некаторыя добрыя рэчы, напісаныя на гэтую тэму, таму я спадзяюся, ёсць добры адказ на гэтую праблему.
Спіс думкамі сам па сабе павінны быць абрэзаны, калі гэта магчыма. I haven’t tried to figure that out. I assume it’s possible, але на самой справе не вырашае асноўнай пытанне бяспекі, таму што хто-то яшчэ можа проста ўвесці URL меркаванне яны хочуць (калі б яны ведалі, што гэта). Аднак, 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. Часам, гэта дастаткова добра.
Пры ўдалым збегу абставінаў, У мяне будзе больш пісаць на гэтую тэму на працягу доўгага часу.
</канец>
Падпісацца на мой блог.
Выконвайце за мной на Twitter у http://www.twitter.com/pagalvin