Joomla存取控制列表:存取層級

文章來源

http://magazine.joomla.org/issues/issue-feb-2012/item/639-Joomla-ACL-Access-Levels

翻譯內容

有了Joomla存取控制列表的概念後,就可以進行實作,讓不同的使用者瀏覽不同的網站內容,底下的範例,適用於Joomla1.7之後的版本。

  

 

在開始實作前,必須確認網站的存取控制政策,第一步你必須描述待解決的問題。

 

對學校網站來說,有以下問題

*一般大眾可以瀏覽大部份的網站內容,但有一些只能讓學生及老師瀏覽。

*老師可以看到一般大眾及只讓老師及學生瀏覽的內容。

*學生只能看到開放給大眾瀏覽的內容及限定學生觀看的內容(看不到只讓老師看的內容)。

 

我們只討論到網站的瀏覽部份,並未牽涉到編輯、建立、修改及管理內容的部份,只針對網站的讀取問題──或稱為存取層級。

 

這篇文章會提到三個群組:public,students及teachers,public群組已經存在於系統中,只要新增students及teachers群組,任何使用者想看到更多的內容就必須在網站前台登入,所以只要設定這些群組有登入網站前台的權限即可,基本上,老師及學生已經是註冊過的使用者。

 

我們需要新增一些內容,讓老師能夠看到只限於老師及學生能看的內容,而學生能看到屬於學生的內容。

 

我們解決這個問題的方法如下:

1.建立students及teachers群組。

2.設定群組具有網站登入的權限。

3.分別建立屬於students及teachers群組的使用者,這裡建了二個,分別是student及teacher。

4.建立teachers及students存取層級。

5.建立分屬teachers及students群組的內容分類,並設定正確的存取層級。

6.建立分屬teachers及students群組的文章,並設定正確的存取層級。

7.建立分屬teachers及students群組的選單,並設定正確的存取層級。

8.登入網站前台進行測試。

 

1.建立使用者群組

進入Joomla網站後台,建立群組。

 

選單路徑:會員->群組管理->新增群組,操作畫面如下:

  

1.輸入群組名稱:Teachers Group。

2.選取public作為父群組。

3.點儲存&新增按鈕,新增另一個群組。

4.輸入群組名稱:Students Group。

5.選取public作為父群組。

6.點儲存&關閉按鈕,回到使用者管理介面。

 

為什麼設定public群組作為父群組?當開始設定存取控制列表時,群組有巢狀關係,權限會很快地變得非常複雜,以public作為父群組,可以直接控制群組的權限,而不用透過繼承的方式,這對一般人來說,會比較容易理解。

 

這個範例中,設定 registered作為父群組,不會讓事情變得更複雜,但是當存取控制列表變得非常複雜時,使用public作為父群組可以降低複雜度而更容易除錯。

 

2.設定核心權限

進入:網站->全站設定->權限的設定頁籤,將Teachers Group及Students Group這二個群組的網站登入核心權限設定為允許,其他的設定值維持為繼承,這二個群組繼承public群組的權限,所以不能做任何事情。

 

3.新建使用者並設定所屬群組

建立群組後,就要建立所屬群組的使用者。

 

點選會員管理->新增會員,可以看到下面的畫面

 

*姓名:使用者的名字。

*帳號:登入用的使用者帳號,例如: teacher。

*密碼及確認密碼:二者的輸入必須完全相同。

*Email:使用者的電子郵件地址。

跳過其他設定欄位,將螢幕往下捲動以設定群組,Registered群組預設是勾選的。

 

再勾選Teachers Group群組, teacher帳號就同時屬於Teachers Group及Registered群組。

 

點選儲存&新增按鈕,重覆相同的流程,新增學生帳號student,並將群組設為Students Group及Registered群組。點選儲存&關閉按鈕即完成操作。

 

為什麼要像其他群組一樣,設定teacher及student為Registered群組呢?        有時候你會想要和其他登入前台網站的使用者一樣,看到登入後Registered群組能看到的內容,而不是只看到為你量身訂做的內容。將使用者同時設定為Registered群組及指定的群組,你可以分別設計Registered群組能看到的選單及指定群組才能看到的選單,客制化網站前台的登入畫面。

 

4.建立存取層級

當建立好使用者、群組,並設定核心權限後,就要開始建立teachers及 students這二個存取層級。

 

點選單項目─會員->存取層級管理->新增存取層級,會看到以下畫面:

  

層級標題輸入Teachers Access Level,勾選Teachers Group群組,只允許Teachers Group讀取網站內容。

 

點選儲存&新增,輸入Students Access Level,勾選Students Group及Teachers Group群組,表示Students Group及Teachers Group群組都被允許讀取網站內容。

 

為什麼不在Students Access Level及Teachers Access Level勾選Registered群組呢?當在這二個存取層級勾選Registered群組後,所有從前台網站登入的使用者都能看到老師或學生才能看到的資訊,存取層級是控制使用者瀏覽內容的關鍵,設定存取層級的群組時必須非常小心。

 

為什麼不在Students Access Level及Teachers Access Level勾選Super users群組呢?這樣做的話,Super users群組所屬的使用者登入前台網站者將看不到這二個存取層級的內容,但是從後台登入,一樣能看到,如果讓Super users群組從前台登入能看到這二個存取層級的內容很重要的話,就必須設定。

 

5.建立分類

在網站上建立一個專門讓教師瀏覽的分類。

 

 當建立這個分類時,設定存取層級為Teachers Access Level。

 

以相同的方法,建立一個專為學生瀏覽的分類,存取層級必須設為Students Access Level。

 

為什麼替教師及學生分別建立分類?你當然可以在Joomla建立的網站上,新增一篇文章,再替文章設定存取層級,多數文章的存取層級會設為Public,你也可以單獨設定文章存取的例外狀況為Teachers Access Level,Students Access level或是Registered Access Level。

 

可是使用分類區分內容,可以有效的區隔讀者及其存取層級,而當文章太多時,你還可以在原有分類下,再新建子分類,以便管理眾多的網站內容。

 

一旦設定分類的存取層級,此分類下的所有文章會繼承所屬分類的存取層級,文章的存取層級設定為public也會失效。

 

6.建立文章

接下來在教師分類下,新增一篇文章,點選內容->文章管理->新增文章

 

 填寫欄位:

*標題:教師閱讀文章

*分類:Teachers Category

*狀態:發佈

*存取層級:Teachers Access Level

*文章內容:輸入一些文字

 

點儲存&新增按鈕,重覆相同流程新增學生文章

*標題:學生閱讀文章

*分類:Students Category

*狀態:發佈

*存取層級:Students Access Level

*文章內容:輸入一些文字

 

輸入完後,點儲存&關閉按鈕。

 

替每個群組各新增完一篇文章後,可以再增加任意數量的文章。

 

既然文章會無條件繼承分類的存取層級,那為什麼還要在每篇文章設定存取層級呢?對我來說,這具有說明的功能。嚴格來說,你可以不更動每篇文章預設的public存取層級,這些文章會繼承分類的存取層級,讓public存取層級失效,而只能讓學生或老師瀏覽。在每一篇文章設定存取層級,也可以避免在九個月後,回頭進行網站除錯時,無法確認網站的存取層級,因為每篇文章都已標示存取層級了。

 

7.建立選單

再來必須建立選單,在主選單中,分別建立教師及學生連結。

 

要建立連結,點選新增,選單類別選擇分類列表,並且輸入如下的資訊:

  

標題:教師資訊

選單型式:分類列表

狀態:發佈

存取層級:Teachers Access Level

選擇類別:Teachers Category

 

點儲存&新增按鈕,替學生重覆以下流程

標題:學生資訊

選單型式:分類列表

狀態:發佈

存取層級:Students Access Level

選擇類別:Students Category

 

輸入完後,點儲存&關閉鈕。

 

為什麼選單型式設定為分類列表?這樣可以讓所有資訊以條列方式全部呈現。你也可以設定為部落格、單一文章或其他你想要的樣式。

 

為什麼設定選單的存取層級?選單不會繼承文章的存取層級嗎?選單的存取層級與內容的存取層級是互相獨立不相干的,換句話說,選單可以是Teachers Access Level的存取層級,而文章卻能另外設定為Public存取層級,這樣的話,顯示選單的模組,存取層級就是Pblic,任何人都能看到此選單,但點選時,如果瀏覽者沒有瀏覽的權限,會顯示沒有存取此頁面權限的訊息。

 

這或許是你所希望的網站資訊呈現方式,但如果要提供良好的使用者體驗,最好是將選單及內容的存取層級設為一致。

 

8.登入測試

我們已針對老師及學生的不同需求而進行了所有的網站設定。

 

回到網站前台,在登入表單輸入登入資訊。

 

輸入教師的登入帳號及密碼。

 

如果設定正確,就可以在選單中看到二個選項:教師資訊及學生資訊。

 

登出後,回到登入頁面,以學生帳號及密碼登入。

 

如果設定正確,選單中就只會看到學生資訊。

 

結論

如果你完全按照這些步驟實作,大概要花費15分鐘的時間完成網站設定。

 

你是否覺得這樣的登入體驗不太完美?下一篇文章,會以相同例子介紹如果客制化使用者群組的登入畫面。

分類:Joomla