日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

浅谈Sharepoint权限

發(fā)布時間:2025/5/22 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 浅谈Sharepoint权限 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

基于Sharepoint做一個客戶管理的系統(tǒng),由于客戶方對權限的要求非常嚴格,所以不得不自己去定義網站的權限,好在Sharepoint提供的權限系統(tǒng)比較完善,我們所創(chuàng)建的權限包括從創(chuàng)建SPWeb到創(chuàng)建SPListItem均實現(xiàn)了一遍,也算是順利的解決了問題。項目做到第一階段,談談自己的一些認識。

?

在開始之前先明確幾個類或者定義:

Sharepoint權限系統(tǒng)采用 權限——角色 ——對象——關聯(lián) 的概念,即:對于一個對象(如:SPWeb,SPList,SPListItem),可以通過添加某個已經包含了角色(SPRoleDefinition)的關聯(lián)(SPRoleAssignment)而更改該對象的權限,而角色(SPRoleDefinition)則是提前通過SPWeb.RoleDefinitions添加到網站內的,注意:只有SPWeb有此屬性可以添加角色定義,其他對象如SPSiteSPListSPListItem均不能添加角色定義,當然他們也不需要。

?

相關類:

?

用戶或用戶組:SPPrincipal 擴展了兩個子類:SPUserSPGroup

權限基類:SPBasePermissions,通過或計算合成一個自定義的權限,注意:需要編輯權限的前提是有查看權限;

角色類:SPRoleDefinition,采用web.RoleDefinitions.Add(definition)的方式添加角色;

關聯(lián)類:對于某個SPPrincipal添加一個SPRoleDefinition的角色,然后再將該關聯(lián)添加到對象上去,注意:在未將該關聯(lián)添加到對象上時,該關聯(lián)都無效。

?

首先定義自己的權限系統(tǒng),我定義了四個級別的角色,本別具有權限:查看、新建、編輯、刪除,這四個權限要遠低于Sharepoint本身的權限,這里以新建角色為例說明: 同時定義了負責向網站添加角色Register類,每一個角色都會對應一個Register類,是為了方便權限的擴展,采用依賴倒置。

為對象分配權限:參數SPListItem 也可以是 SPWebSPList,權限的分配一般是在對象剛剛創(chuàng)建后來實現(xiàn),如

SPWebTemplate template = web.Site.GetCustomWebTemplates((uint)web.Locale.LCID)[WebTemplate];

SPWeb newWeb = RootSPWeb.Webs.Add(rurl, customerName, string.Empty, (uint)2052, template, true, false);

此時就應該對該newWeb做權限操作。而SPListItem的操作一般是在SPItemEventReceiver的ItemAdded事件中去實現(xiàn)

Code:

private?void?RoleAssignment(SPListItem?item,?SPPrincipal?groupOrUser,?SPRoleDefinition?role)
????????{
????????
if?(!item.HasUniqueRoleAssignments)
????????{
????????????item.BreakRoleInheritance(
true);//true則斷開并繼承原有權限,false則斷開不繼承原有權限
????????}
????????
????????????
????????????
this.DisableEventFiring();

????????????item.Web.AllowUnsafeUpdates?
=?true;

????????????SPRoleAssignment?assignment?
=?new?SPRoleAssignment(groupOrUser);
????????????assignment.RoleDefinitionBindings.Add(role);
????????????item.RoleAssignments.Add(assignment);

????????????item.Update();

????????????
this.EnableEventFiring();
????????}

?Code:

//角色基類:實際上基類提供了查看的權限,因此在查看中不需要擴展
public?abstract?class?BasePermissionRole
????{
????????
private?string?roleName;
????????
public?virtual?string?RoleName
????????{
????????????
get
????????????{
????????????????
return?roleName;
????????????}
????????????
set
????????????{
????????????????roleName?
=?value;
????????????}
????????}

????????
private?string?roleDescription;
????????
public?virtual?string?RoleDescription
????????{
????????????
get
????????????{
????????????????
return?roleDescription;
????????????}
????????????
set
????????????{
????????????????roleDescription?
=?value;
????????????}
????????}

????????
public?abstract?SPBasePermissions?ComposePermission();

????????
protected?virtual?SPBasePermissions?ComposeViewPermission()
????????{
????????
//對應Sharepoint下的34個基本權限
????????????return?SPBasePermissions.ViewListItems?|?SPBasePermissions.ViewVersions?|
???????????????????SPBasePermissions.ViewFormPages?
|?SPBasePermissions.ViewPages?|
???????????????????SPBasePermissions.OpenItems?
|?SPBasePermissions.CreateAlerts?|
???????????????????SPBasePermissions.BrowseUserInfo?
|?SPBasePermissions.UseRemoteAPIs?|
???????????????????SPBasePermissions.UseClientIntegration?
|?SPBasePermissions.Open;
????????}

????????
public?abstract?BaseRoleRegister?CreateRegister();//通過依賴倒置以及單件實現(xiàn)角色注冊
????}
//新建角色,override基類的ComposePermission()方法,并在View的基礎上擴展
public?class?AddPermissionRole?:?BasePermissionRole
????{
????????
public?AddPermissionRole()
????????{
????????????
this.RoleName?=?"新建";?
????????????
this.RoleDescription?=?"向列表中添加項目,向文檔庫中添加文檔,以及添加?Web?討論評論";
????????}

????????
public?override?string?RoleName
????????{
????????????
get
????????????{
????????????????
return?base.RoleName;
????????????}
????????????
set
????????????{
????????????????
base.RoleName?=?value;
????????????}
????????}

????????
public?override?SPBasePermissions?ComposePermission()
????????{
????????????
return?base.ComposeViewPermission()?|?SPBasePermissions.AddListItems;
????????}

????????
public?override?BaseRoleRegister?CreateRegister()
????????{
????????????
return?new?AddRoleRegister(this);
????????}
????}

//注冊基類:
public?class?BaseRoleRegister
????{
????????
public?BaseRoleRegister(BasePermissionRole?role)
????????{
????????????
this.Permission?=?role;
????????}

????????
protected?BasePermissionRole?Permission;

????????
public?virtual?SPRoleDefinition?ExecuteRegister(SPWeb?web)
????????{
????????????
foreach?(SPRoleDefinition?rd?in?web.RoleDefinitions)
????????????{
????????????????
if?(rd.Name?==?this.Permission.RoleName)
????????????????????
return?rd;
????????????}

????????????SPRoleDefinition?definition?
=?new?SPRoleDefinition();
????????????definition.Name?
=?this.Permission.RoleName;
????????????definition.BasePermissions?
=?this.Permission.ComposePermission();
????????????definition.Description?
=?this.Permission.RoleDescription;

????????????web.RoleDefinitions.BreakInheritance(
true,?true);
????????????web.RoleDefinitions.Add(definition);
????????????web.Update();

????????????
return?web.RoleDefinitions[this.Permission.RoleName];
????????}
????}

//新建角色的注冊類:
public?class?ApproveRoleRegister?:?BaseRoleRegister
????{
????????
public?ApproveRoleRegister(BasePermissionRole?role)
????????????:?
base(role)
????????{?}

????}

基礎權限列表:

?

ViewListItems

查看項目 ?-? 查看列表中的項目、文檔庫中的文檔和查看 Web 討論評論。

OpenItems

打開項目 ?-? 使用服務器端文件處理程序查看文檔源。

ViewVersions

查看版本 ?-? 查看列表項或文檔的以前版本。

CreateAlerts

創(chuàng)建通知 ?-? 創(chuàng)建電子郵件通知。

ViewFormPages

查看應用程序頁面 ?-? 查看表單、視圖和應用程序頁面。枚舉列表。

ViewPages

查看網頁 ?-? 查看網站中的網頁。

BrowseUserInfo

瀏覽用戶信息 ?-? 查看有關網站用戶的信息。

UseRemoteAPIs

使用遠程接口 ?-? 使用 SOAPWeb DAV SharePoint Designer 接口訪問網站。

UseClientIntegration

使用客戶端集成功能 ?-? 使用啟動客戶端應用程序的功能。如果沒有此權限,用戶必須本地處理文檔并上載更改。

Open

打開 ?-? 允許用戶打開網站、列表或文件夾,以便訪問該容器中的項目。

?

?

?

?

?

?

ManageLists

管理列表 ?-? 創(chuàng)建和刪除列表,添加或刪除列表中的欄,以及添加或刪除列表的公共視圖。

CancelCheckout

替代簽出版本 ?-? 放棄或簽入已由其他用戶簽出的文檔。

AddListItems

添加項目 ?-? 向列表中添加項目,向文檔庫中添加文檔,以及添加 Web 討論評論。

EditListItems

編輯項目 ?-? 編輯列表中的項目、文檔庫中的文檔、文檔中的 Web 討論評論以及自定義文檔庫中的 Web 部件頁。

DeleteListItems

刪除項目 ?-? 從列表中刪除項目、從文檔庫中刪除文檔,以及刪除文檔中的 Web 討論評論。

ApproveItems

批準項目 ?-? 批準列表項或文檔的次要版本。

DeleteVersions

刪除版本 ?-? 刪除列表項或文檔的以前版本。

ManagePermissions

管理權限 ?-? 創(chuàng)建和更改網站上的權限級別,并為用戶和用戶組分配權限。

ViewUsageData

查看使用率數據 ?-? 查看有關網站使用率的報告。

ManageSubwebs

創(chuàng)建子網站 ?-? 創(chuàng)建子網站,例如工作組網站、會議工作區(qū)網站和文檔工作區(qū)網站。

ManageWeb

管理網站 ?-? 授予執(zhí)行該網站的所有管理任務并管理內容的能力。

AddAndCustomizePages

添加和自定義網頁 ?-? 添加、更改或刪除 HTML 網頁或 Web 部件頁,并使用與 Windows SharePoint Services 兼容的編輯器編輯網站。

ApplyThemeAndBorder

應用主題和邊框 ?-? 將主題或邊框應用于整個網站。

ApplyStyleSheets

應用樣式表 ?-? 將樣式表(.CSS 文件)應用于網站。

CreateGroups

創(chuàng)建用戶組 ?-? 創(chuàng)建一個用戶組,該用戶組可用于網站集中的任何位置。

BrowseDirectories

瀏覽目錄 ?-? 使用 SharePoint Designer Web DAV 接口枚舉網站中的文件和文件夾。

EnumeratePermissions

枚舉權限 ?-? 枚舉網站、列表、文件夾、文檔或列表項中的權限。

ManageAlerts

管理通知 ?-? 管理網站中所有用戶的通知。

EditMyUserInfo

編輯個人用戶信息 ?-? 允許用戶更改個人用戶信息,例如添加圖片。

ManagePersonalViews

管理個人視圖 ?-? 創(chuàng)建、更改和刪除列表的個人視圖。

AddDelPrivateWebParts

添加/刪除個人 Web 部件 ?-? Web 部件頁中添加或刪除個人 Web 部件。

UpdatePersonalWebParts

更新個人 Web 部件 ?-? 更新 Web 部件以顯示個性化信息

?

轉載于:https://www.cnblogs.com/jerryshi/archive/2009/04/09/1432382.html

總結

以上是生活随笔為你收集整理的浅谈Sharepoint权限的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。