Jive笔记1--关于Jive1中的验证和相关类的调用

王朝java/jsp·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

日期: 2001-4-24 下午5:25

所有的jsp页面均用下面代码验证用户身份

<% ////////////////////////

// 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.coolservlets.forum.database.DbAuthorizationFactory。代码如下:

Class c = Class.forName(className);

factory = (AuthorizationFactory)c.newInstance();

其实,这里的c是DbAuthorizationFactory类型的,但是为了通用性,被upcasting为其父类。java的动态绑定技术可以正确调用相应的成员函数。所以,真正我们要看的代码,在DbAuthorizationFactory这个类中。

好了,我们获得了一个factory,通过factory.createAnonymousAuthorization();就可以获得一个匿名的Authorization对象实例. 记住,虽然factory在申明的时候是AuthorizationFactory类型的,但真正调用的代码在DbAuthorizationFactory.class中。继续跟踪分析factory.createAnonymousAuthorization();其实就返回一个userID为-1的Authorization对象实例。注意,这里的Authorization对象其实是DbAuthorization对象

好了,接下来就可以通过Authorization对象来获得ForumFactory,然后获得Forums,然后...

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航