Jive筆記1--關於Jive1中的驗證和相關類的呼叫 (轉)

amyz發表於2007-08-15
Jive筆記1--關於Jive1中的驗證和相關類的呼叫 (轉)[@more@]日期: 2001-4-24 下午5:25
所有的頁面均用下面程式碼驗證身份
// Authorization check

// check for the existence of an authorization token
Authorization authToken = SkinUtils.getUserAuthorization(request,response);

// if the token was null, they're not authorized. Since this skin will
// allow guests to view forums, we'll set a "guest" authentication
// token
if( authToken == null ) {
authToken = AuthorizationFactory.getAnonymousAuthorization();
}
%>
第一句話沒什麼好說的,是老老實實的static程式碼,從session or cookie中獲得Authorization
所謂Authxxx物件,不過是一個使用者ID而已.
第二句:如果第一句返回的是null,作為匿名使用者登陸
AuthorizationFactory.getAnonymousAuthorization();
首先一個private,static成員:
AuthorizationFactory.loadAuthorizationFactory()
在這個函式里,載入相應的驗證類,如果你自己編寫了相關的類,需要在jive.properties中新增:AuthorizationFactory.className=your_full_class_name。否則,載入預設的類:com.cools.forum.database.authorizationFactory。程式碼如下:
Class c = Class.forName(className);
factory = (AuthorizationFactory)c.newInstance();
其實,這裡的c是DbAuthorizationFactory型別的,但是為了通用性,被upcasting為其父類。的動態繫結技術可以正確呼叫相應的成員函式。所以,真正我們要看的程式碼,在DbAuthorizationFactory這個類中。
好了,我們獲得了一個factory,透過factory.createAnonymousAuthorization();就可以獲得一個匿名的Authorization物件例項. 記住,雖然factory在申明的時候是AuthorizationFactory型別的,但真正呼叫的程式碼在DbAuthorizationFactory.class中。繼續跟蹤分析factory.createAnonymousAuthorization();其實就返回一個userID為-1的Authorization物件例項。注意,這裡的Authorization物件其實是DbAuthorization物件

好了,接下來就可以透過Authorization物件來獲得ForumFactory,然後獲得Forums,然後...

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-958254/,如需轉載,請註明出處,否則將追究法律責任。

相關文章