Sharepoint Online的匿名存取解決方案
以下文章適用於Office 365
如果有用365的人們一定會很困擾,為何我在公用網站之下都一直無法讓匿名用戶自由的存取我想開放的東西?最明顯的例子莫過於如果創了一個公開的部落格,用戶在不登入的情況下可以使用
我再逛365社羣的時後偶然看到一篇 How to enable Anonymous Access to a blog site on your Office 365 public website,發現似乎是個不錯的解決方案,加上有人推文說可行,所以想說給大家參考看看
如何啟用匿名訪問的博客網站上的365處公共網站
更糟糕的是,鄉民們只能抱怨,什麼也不能做。
不過有個方法讓我驚喜:可以用沙箱的方法來設定匿名用戶的權限! 這意味著我們自行撰寫程式碼,以便開發讓匿名用戶參訪意見調查、訪問各類文章:)我已經做到了這一點。
下面有一個沙盒解決方案的範例檔案供你下載, 只要上傳這個WSP檔案到你公開網站,然後啟動它並且建立起來,就會在首頁上顯示,新的部落格就做好啦!
PS.如果你認為:誰在乎怎麼做的?我只要能用就好,那直接下載這個連結吧 WSP包在這裡 。這將安裝一個Web部件。 把這個webpart的主頁上您的博客站點,並點擊大按鈕... 它應該做的所有的為你工作。
其實很簡單。 SharePoint API所公開的權限列表中,匿名用戶透過一個叫做AnonymousPermMask64的SPlist(我猜是Sharepoint清單) 註:原來是一個型別 MSDN SPlist
API公開的SharePoint列表權限的匿名用戶通過SPList屬性稱為AnonymousPermMask64 。 這是SPBasePermissions
列舉型別的值,有效地描述匿名訪問用戶。
究其原因,預設的設定值並不包含匿名用戶,因為ViewFormPages(表單檢視頁)的權限預設值把匿名用戶給排除了!
這並不工作默認為匿名用戶,是因為“ViewFormPages”權限默認情況下不包括 !
因此,我們的代碼相當簡單:
// get the "Comments" list
SPList list = SPContext.Current.Web.Lists["Comments"];
// check if it has unique permissions
if(!list.HasUniqueRoleAssignments)
{
list.BreakRoleInheritance(true);
}
// make sure people can edit their own items
list.WriteSecurity = 2;
// grant permissions to anonymous users
list.AnonymousPermMask64 =
(SPBasePermissions.Open |
SPBasePermissions.OpenItems |
SPBasePermissions.ViewFormPages |
SPBasePermissions.ViewListItems |
SPBasePermissions.AddListItems);
list.Update();
就這樣,我們在(ViewFormPages,ViewListItems和AddListItems)授予了匿名用戶額外的權限,在Posts和Categories上重做這個步驟。(但記得要去掉“AddListItems”位!否則匿名用戶將能夠新增文章!)
就是這樣!如果還不懂的話,我有一個小型範本,這已經運行在我的Office 365網站: www.hatchsolutions.co.uk/Blog/
以上就是你所需要的... 希望大家看到都會很高興,畢竟我們自己找到了新的救贖!
(現在我們需要的是一個體面的部落格模板類的東西CAPTCHA ...)
(剛剛打的都沒了 真嘔血)
我花了很多時間試做了這個wsp,發現要在公用網站,而且在英文網站下,這個webpart纔有用。有興趣的請把wsp上傳到方案庫,然後建立blog。之後編輯blog首頁,加入webpart並點選即可。之後看你要不要移除webpart都可以。
我試作的網站
不過有個方法讓我驚喜:可以用沙箱的方法來設定匿名用戶的權限! 這意味著我們自行撰寫程式碼,以便開發讓匿名用戶參訪意見調查、訪問各類文章:)我已經做到了這一點。
下面有一個沙盒解決方案的範例檔案供你下載, 只要上傳這個WSP檔案到你公開網站,然後啟動它並且建立起來,就會在首頁上顯示,新的部落格就做好啦!
PS.如果你認為:誰在乎怎麼做的?我只要能用就好,那直接下載這個連結吧 WSP包在這裡 。這將安裝一個Web部件。 把這個webpart的主頁上您的博客站點,並點擊大按鈕... 它應該做的所有的為你工作。
重要事項:你不一定要保留著WebPart。 一旦你檢查它的工作方式以後就可以從方案庫刪除WebPart和WSP!
那麼,我們是怎麼做到的?
其實很簡單。 SharePoint API所公開的權限列表中,匿名用戶透過一個叫做AnonymousPermMask64的SPlist(我猜是Sharepoint清單) 註:原來是一個型別 MSDN SPlist
API公開的SharePoint列表權限的匿名用戶通過SPList屬性稱為AnonymousPermMask64 。 這是SPBasePermissions
列舉型別的值,有效地描述匿名訪問用戶。
究其原因,預設的設定值並不包含匿名用戶,因為ViewFormPages(表單檢視頁)的權限預設值把匿名用戶給排除了!
這並不工作默認為匿名用戶,是因為“ViewFormPages”權限默認情況下不包括 !
因此,我們的代碼相當簡單:
// get the "Comments" list
SPList list = SPContext.Current.Web.Lists["Comments"];
// check if it has unique permissions
if(!list.HasUniqueRoleAssignments)
{
list.BreakRoleInheritance(true);
}
// make sure people can edit their own items
list.WriteSecurity = 2;
// grant permissions to anonymous users
list.AnonymousPermMask64 =
(SPBasePermissions.Open |
SPBasePermissions.OpenItems |
SPBasePermissions.ViewFormPages |
SPBasePermissions.ViewListItems |
SPBasePermissions.AddListItems);
list.Update();
就這樣,我們在(ViewFormPages,ViewListItems和AddListItems)授予了匿名用戶額外的權限,在Posts和Categories上重做這個步驟。(但記得要去掉“AddListItems”位!否則匿名用戶將能夠新增文章!)
就是這樣!如果還不懂的話,我有一個小型範本,這已經運行在我的Office 365網站: www.hatchsolutions.co.uk/Blog/
以上就是你所需要的... 希望大家看到都會很高興,畢竟我們自己找到了新的救贖!
(現在我們需要的是一個體面的部落格模板類的東西CAPTCHA ...)
(剛剛打的都沒了 真嘔血)
我花了很多時間試做了這個wsp,發現要在公用網站,而且在英文網站下,這個webpart纔有用。有興趣的請把wsp上傳到方案庫,然後建立blog。之後編輯blog首頁,加入webpart並點選即可。之後看你要不要移除webpart都可以。
我試作的網站