我的Shark的版本为:shark-1.0-1
一、用户及组管理
1、涉及的模块:
用户与组管理及对内部开放,也对外部开放,涉及的模块为SharkAPI、SharkKernel、SharkUserGroup
2、相关的数据库表:
如果用户与组信息存储到数据库,使用到的表为:UserTable、GroupTable、UserGroupTable、GroupGroupTable
3、实现说明
Shark给外部的接口是org.enhydra.shark.api.client.wfservice.UserGroupAdministration,大家通过这个接口就能管理用户和组(如添加、删除、修改用户等),它的实现类是org.enhydra.shark.UserGroupAdmin;
Shark内部的接口是org.enhydra.shark.api.internal.usergroup.UserGroupManager,这个Shark中其他模块使用的,比如org.enhydra.shark.UserGroupAdmin,UserGroupAdmin本身并不与存储用户数据资源(如表或者LDAP)打交道,而是通过UserGroupManager来实现所有的功能的(这也是接口的好处),UserGroupManager封装了对用户和组的操作,大家可以看看里面的方法
,对UserGroupManager的实现,在模块SharkUserGroup中,目前Shark给出了三种实现:DODS、Hibernate、LDAP,详细的我就不说了,大家可以看看源代码。4、我的实现
我自己实现了UserGroupManager,本来想把代码贴出来,但太长,所以就作罢,想要的话发邮件给我。
写好对UserGroupManager实现,第二步只要修改Shark.conf文件里UserGroupManagerClassName = implement.usergroup.StaticUserGroupManager(自己的实现类)。这样调用UserGroupAdministration时就能得到自己的用户信息了。
二、认证管理
因为认证管理也涉及到用户,所以在此也做以分析
1、涉及的模块:
认证管理及只对内部开放,涉及的模块为SharkAPI、SharkAuthentication
2、实现说明:
Shark给出的内部接口是org.enhydra.shark.api.internal.authentication.AuthenticationManager,只有两个方法:configure()和validateUser()。configure()就不说了,大家都知道;validateUser()就是用来验证用户是否合法的。对AuthenticationManager的实现,在模块SharkAuthentication中,目前Shark也给出了三种实现:DODS、Hibernate、LDAP,大家看看源代码。我有点迷惑不解的就是它们的实现都不是通过UserGroupManager接口,而是自己直接操作表或LDAP来验证用户,这难道不是违背这种接口与模块设计的原则,也许它们不是同一般人开发的,并且同时进行。如果您有什么更好的解释,欢迎告诉我。
3、我的实现
强类建议大家使用UserGroupManager实现AuthenticationManager,同上,修改Shark.conf文件里AuthenticationManagerClassName = implement.usergroup.StaticAuthenticationManager(自己的实现类)。这样调用SharkConnection的connect()时是使用自己的验证类来验证用户的。
Mial:Wangxmwxm@163.com