2007年6月27日 星期三

Liferay Portal單一使用者登入

在啟動Liferay後,如果同一個使用者連續開啟Browser進行登入後結果會是如何,真正實作後會發現,我們同樣使用test@liferay.com這個帳號進行二次登入後,在Session中會有二個Session的記錄,並且這二個同樣帳號的使用者可進行完全符合該帳號權限的操作,那我們要如何限制使用者帳號只能進行單一的登入呢?

圖:預設狀況下,同一使用者進行二次登入的結果。

如果手邊有LiferaySource Code的話,可以找一下,在原始碼[portal-ejbclassesportal.properties]中的設定。

portal.properties

#

# Set the following to true if users are allowed to have simultaneous logins

# from different sessions.

#

auth.simultaneous.logins=true

這個設定主要用途在於設定是否允許相同帳號的使用者同時間進行登入,換句話說就是允許同一使用者進行多次的登入,因為預設為true,所以才會有上述的狀況出現。

若不希望同一時使用者進行多次登入的話可將該設定改為false即可,但在原始碼中修改並不明智,畢竟你修改了預設的設定,比較聰明的方法為,在已經佈署的Liferay Portal上進行調整,你可以開啟[%LiferayPortal%webappsROOTWEB-INFclassesportal-ext.properties]這個延伸設定檔,在當中進行設定將會覆蓋掉預設的設定。將其修改為auth.simultaneous.logins=false後重新啟動liferay,再次進行二次相同帳號使用者登入。

實作後會覺得有些吊詭的情況,還是允許二次相同帳號的登入如下圖:

圖:還是一樣的狀況

但當我們將第一次登入帳號的Browser進行任何操作時將會發現出現結果如下:

圖:警告有相同的帳號用不同的Session登入。

這個意思就代表了第一次登入的使用者因為在之後已有其他相同的使用者進行了登入,因此被踢出了Portal系統。這時我們再檢查一次第二次登入的BrowserSession資訊:

圖:得到滿意的結果,因先前登入的User已被踢出,所以只有一個使用者登入。

好,最後我們來個結論,這個設定只會限制在Liferay Portal中無論使用PCIP為何,使用者只能進行單一的登入,這麼看來似乎很像達成了SSO( Single Sign On )單一使用者簽入的任務,但其實不然,SSO是基於多個系統的單一簽入,因此多個系統一定會共用一個驗證中心,有興趣的話可以找一下Liferay PortalCAS進行SSO的資料。在本例中,因為Liferay Portal只是單一一個系統,因此談不上SSO

1 則留言:

AL Chang 提到...

您好
我們是一個青創的公司
由幾位來自各個行業的夥伴
想完成一個運動社群的大夢
目前規畫的進度(如SSO)在執行上
遇到許多市場上人才缺乏的瓶頸
希望有機會能借重到您的專才
或是借重到您身邊的資源 找到合適的人選
來完成一些程式端的建置
我們的官網(Joomla模組)
www.tmps.com.tw
如果您亦有創業的動機
我們也竭誠地歡迎您並希望有機會能進一步對您做解說感謝您

張央昇(AL CHANG)

0923-313-586
alchang1216@gmail.com