权限组件接口说明文档.docx
《权限组件接口说明文档.docx》由会员分享,可在线阅读,更多相关《权限组件接口说明文档.docx(17页珍藏版)》请在冰豆网上搜索。
权限组件接口说明文档
项目编号:
文档编号:
版本号:
<权限组件接口说明文档>
<接口说明文档>
编写:
陈照日期:
2011年11月15日
校对:
日期:
年月日
审核:
日期:
年月日
批准:
日期:
年月日
保密级别:
秘密
目录
1.RBAC权限模型3
2.RAMS的权限模型3
2.1.RAMS说明3
2.2.RAMS的RBAC结构3
2.3.RAMS的表结构描述3
3.权限接口说明3
3.1.com.redhat.auth.ejb.AccountApplication4
3.2.com.redhat.auth.ejb.BizSystemApplication7
3.3.com.redhat.auth.ejb.FunctionEntityApplication8
3.4.com.redhat.auth.ejb.FunctionEntityTypeApplication10
3.5.com.redhat.auth.ejb.RoleApplication11
3.6.com.redhat.auth.ejb.SecurityStrategyApplication12
4.接口使用说明13
4.1.在Action层中获得接口13
4.2.例子:
为帐户添加权限14
1.RBAC权限模型
RBAC是一个国际普遍认可的权限模型,全名是:
RoleBaseAccessControl,译为基于角色的访问控制。
2.RAMS的权限模型
RAMS说明
RAMS(RedhatAuthorizationManagementSystem),是一个基于RBAC权限控制以及结合了SpringSecurity的权限控制组件(因为项目中可能只用到其一部份)。
RAMS的RBAC结构
RAMS的表结构描述
RAMS_ACCOUNT:
帐户表
RAMS_ROLE:
角色表
RAMS_FUNCTION_ENTITY:
权限表
RAMS_FUNCTION_ENTITY_TYPE:
权限的分类
RAMS_ACCOUNT_R_ROLE:
帐户与角色的关联表(一个帐户关联多个角色)
RAMS_ROLE_R_FUNCTION_ENTITY:
角色与权限的关联表(一个角色关系多个权限)
3.权限接口说明
com.redhat.auth.ejb.AccountApplication
publicinterfaceAccountApplication{
/**
*删除一个帐户,在生产中请勿使用该接口
*@paramid
*@authoriffiff1@">TylerChen
*@since2011-11-15
*/
voiddeleteAccount(Longid);
/**
*新增或修改一个account实体
*@paramaccount
*/
AccountVOupdate(AccountVOaccount);
/**
*新增一个account实体
*@paramaccount
*/
AccountVOadd(AccountVOaccount);
/**
*锁定一个帐号
*@paramaccount
*/
voidlock(LongaccountId);
/**
*解锁一个帐号
*@paramaccount
*/
voidunLock(LongaccountId);
/**
*通过ID获取帐户信息
*@paramid
*@return
*/
AccountVOgetAccount(longid);
/**
*通过用户名来获取帐户信息
*@paramusername
*@return
*@authoriffiff1@">TylerChen
*@since2011-11-15
*/
AccountVOgetAccount(Stringusername);
/**
*根据名称查询帐号是否存在
*@paramusername
*@return
*/
booleanisAccountExistsByName(Stringusername);
/**
*根据帐号Email查询帐号是否存在
*@paramemail
*@return
*/
booleanisAccountExistsByEmail(Stringemail);
/**
*将一个帐号同多个系统绑定起来
*@paramaccountId
*@paramsystemIds
*@return
*/
voidaccountBindSystems(longaccountId,String[]systemIds);
/**
*将一个帐号同多个系统解除绑定
*@paramaccountId
*@paramsystemIds
*/
voidaccountUnBindSystem(longaccountId,String[]systemIds);
/**
*设置一个帐号和一个系统的绑定状态
*@paramaccontId
*@paramsystemId
*@paramstatus
*/
voidsetBizSystemBindingStatus(longaccontId,longsystemId,
intbizSystemBindingStatus);
/**
*将一个系统同多个帐号进行绑定
*@paramsystemId
*@paramaccountIds
*/
voidsystemBindAccount(longsystemId,String[]accountIds);
/**
*解除一个系统同多个帐号之间的绑定
*@paramsystemId
*@paramaccountIds
*/
voidsystemUnBindAccount(longsystemId,String[]accountIds);
/**
*查出所有的accounts
*@paramsearch{username,realName}
*@parampage
*@parampageSize
*@return
*/
ListlistAcounts(AccountVOsearch,intpage,intpageSize);
/**
*根据一个系统ID联动的查询出相应的Account
*@paramsearch{id:
bizSystemId,username,realName}
*@parampage
*@parampageSize
*@return
*/
ListlistAccountBySystemId(AccountVOsearch,intpage,
intpageSize);
/**
*获取一个系统,查询出所有未包含此系统的Account
*@paramsearch{username,realName}
*@parampage
*@parampageSize
*@return
*/
ListlistAccountNotContainsSystemId(AccountVOsearch,intpage,
intpageSize);
/**
*传入accountId时,返回所有此ID未绑定的BizSystem
*@paramsearch{id:
accountId}
*/
ListlistBizSystemNotBindingAccount(AccountVOsearch,
intpage,intpageSize);
/**
*为指定ID的帐户设置其角色
*@paramaccountId
*@paramroleIds
*@authoriffiff1@">TylerChen
*@since2011-11-15
*/
voidsetRoles(LongaccountId,Long[]roleIds);
/**
*为指定ID的帐户添加角色
*@paramaccountId
*@paramroleIds
*@authoriffiff1@">TylerChen
*@since2011-11-15
*/
voidaddRole(LongaccountId,Long[]roleIds);
/**
*为指定ID的帐户删除角色
*@paramaccountId
*@paramroleIds
*@authoriffiff1@">TylerChen
*@since2011-11-15
*/
voidremoveRole(LongaccountId,Long[]roleIds);
}
com.redhat.auth.ejb.BizSystemApplication
publicinterfaceBizSystemApplication{
/**
*删除一个业务系统信息,在生产中请勿使用该接口
*@parambizSystemId
*@authoriffiff1@">TylerChen
*@since2011-11-15
*/
voidremoveBizSystem(LongbizSystemId);
/**
*创建一个系统
*@paramsystem
*@return
*/
BizSystemVOcreateBizSystem(BizSystemVOsystem);
/**
*保存修改
*@paramsystem
*@return
*/
BizSystemVOsaveBizSystem(BizSystemVOsystem);
}
com.redhat.auth.ejb.FunctionEntityApplication
publicinterfaceFunctionEntityApplication{
/**
*查询某节点全部子节点
*@paramparentId上级节点的ID
*@paramcurrentPage当前页
*@parampageSize分页大小
*@return
*/
ListqueryChildNode(LongparentId,intcurrentPage,
intpageSize);
/**
*通过ID获得功能实体信息
*@paramid
*@return
*@authoriffiff1@">TylerChen
*@since2011-11-15
*/
FunctionEntityVOgetFunctionEntityById(Longid);
/**
*创建一个功能实体
*@paramentity
*@return
*@authoriffiff1@">TylerChen
*@since2011-11-15
*/
FunctionEntityVOcreateFunctionEntity(FunctionEntityVOentity);
/**
*更新一个功能实体
*@paramentity
*@return
*@authoriffiff1@">TylerChen
*@since2011-11-15
*/
FunctionEntityVOupdateFunctionEntity(FunctionEntityVOentity);
/**
*删除一个功能实体
*@paramid
*@authoriffiff1@">TylerChen
*@since2011-11-15
*/
voiddeleteFunctionEntityById(Longid);
/**
*获得功能实体的记录数
*@paramsearch
*@return
*@authoriffiff1@">TylerChen
*@since2011-11-15
*/
LonggetCount(FunctionEntityVOsearch);
/**
*查询功能实体信息
*@paramsearch{id,name,alias,status}
*@paramcurrentPage当前页
*@parampageSize分页大小
*@return
*@authoriffiff1@">TylerChen
*@since2011-11-15
*/
ListqueryAllByPage(FunctionEntityVOsearch,
intcurrentPage,intpageSize);
/**
*增加/解除功能实体关联关系
*@paramid
*@paramids
*/
voidsetRelevance(longrscId,longdestId);
/**
*更新功能实体状态
*@paramFunctionEntity
*@paramstatus
*/
voidchangStatus(Longid,intfunctionEntityStatus);
/**
*获取默认父实体,不存在则创建
*@return
*/
FunctionEntityVOgetDefaultRootFunctionEntity();
}
com.redhat.auth.ejb.FunctionEntityTypeApplication
publicinterfaceFunctionEntityTypeApplication{
/**
*保存/增加功能实体类型
*@paramtype
*@return
*@authoriffiff1@">TylerChen
*@since2011-11-15
*/
FunctionEntityTypeVOsave(FunctionEntityTypeVOtype);
/**
*获得一个功能实体类型
*@paramid
*@return
*@authoriffiff1@">TylerChen
*@since2011-11-15
*/
FunctionEntityTypeVOget(longid);
/**
*删除一个功能实体类型
*@paramid
*@authoriffiff1@">TylerChen
*@since2011-11-15
*/
voiddelete(longid);
}
com.redhat.auth.ejb.RoleApplication
publicinterfaceRoleApplication{
/**
*根据ID查询role对象
*@paramid
*@return
*/
RoleVOgetRoleById(Longid);
/**
*创建一个角色
*@paramrole
*@return
*/
RoleVOcreateRole(RoleVOrole);
/**
*更新一个角色
*@paramrole
*@return
*/
RoleVOupdateRole(RoleVOrole);
/**
*删除一个角色对象
*@paramid
*/
voiddeleteRoleById(Longid);
/**
*分页查询角色列表
*@paramsearch{name,status}
*@paramcurrentPage
*@parampageSize
*@return
*/
ListqueryAllByPage(RoleVOsearch,intcurrentPage,intpageSize);
/**
*统计匹配记录数
*@paramsearch
*@return
*/
LonggetCount(RoleVOsearch);
/**
*按功能实体funIds集合给角色id进行权限分配
*@paramcurrentRole
*@paramfunIds
*@return
*/
voidsetPermissions(Longid,Long[]funIds);
/**
*按功能实体funIds集合给角色id进行权限分配
*@paramcurrentRole
*@paramfunIds
*@return
*/
voidremovePermissions(Longid,Long[]funIds);
/**
*按功能实体funIds集合给角色id进行权限分配
*@paramcurrentRole
*@paramfunIds
*/
voidaddPermissions(Longid,Long[]funIds);
/**
*状态设置
*@paramrole
*@paramstatus
*/
voidchangeStatus(Longid,introleStatus);
}
com.redhat.auth.ejb.SecurityStrategyApplication
publicinterfaceSecurityStrategyApplication{
/**
*删除一个安全策略
*@paramid
*@authoriffiff1@">TylerChen
*@since2011-11-15
*/
voiddeleteSecurityStrategy(Longid);
/**
*新增/保存一个安全策略
*@paramstrategy
*@return
*@authoriffiff1@">TylerChen
*@since2011-11-15
*/
SecurityStrategyVOsaveSecurityStrategy(SecurityStrategyVOstrategy);
/**
*获得所有的安全策略
*@return
*@authoriffiff1@">TylerChen
*@since2011-11-15
*/
SecurityStrategyVOloadSecurityStrategy();
}
4.接口使用说明
所需要关注的接口有:
com.redhat.auth.ejb.AccountApplication
com.redhat.auth.ejb.FunctionEntityTypeApplication
com.redhat.auth.ejb.FunctionEntityApplication
com.redhat.auth.ejb.RoleApplication
在Action层中获得接口
com.redhat.auth.ejb.AccountApplication
@Autowired
com.redhat.auth.ejb.AccountApplicationramsAccountApplication
com.redhat.auth.ejb.FunctionEntityTypeApplication
@Autowired
com.redhat.auth.ejb.FunctionEntityTypeApplicationramsFunctionEntityTypeApplication
com.redhat.auth.ejb.FunctionEntityApplication
@Autowired
com.redhat.auth.ejb.FunctionEntityApplicationramsFunctionEntityApplication
com.redhat.auth.ejb.RoleApplication
@Autowired
com.redhat.auth.ejb.RoleApplicationramsRoleApplication
例子:
为帐户添加权限
AccountVOaccount=null;
RoleVOrole=null;
FunctionEntityTypeVOtype=null;
FunctionEntityVOentity=nul