锁定老帖子 主题:liferay权限探索
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-06-04
真不好意思,上次对liferay仅仅写了简略的概括.后来发现那么多人浏览,现在想来真是对不住大家. 我现在把权限开发的部分写出来,希望对大家有帮助. 权限开发有四个步骤: 1、定义所有的资源和权限 2、添加资源 3、把资源和必须的许可联系起来 4、返回资源前检查权限 其核心是资源的添加,资源的删除和权限的检查。 其中用的核心代码: 添加资源:使用的的类是ResourceLocalService,方法是addResource(String companyId,String usrId,String name,String primkey,boolean portletActions,boolean addCommnunityPermission,boolean addGuestPermission) 其中如果要能知道方法中各个变量的数据来源,那对整个权限开发有很大的帮助。首先是userId的来源,它是从PrincipalBean获得的,如果你看过PrincipalBean的源代码,你可以看到getUser()方法,所以你可以在ServiceImpl中获得userId,并且把它作为写入到addEntry()(可以自己定义方法名)中,添加资源的功能一般是在localServiceImpl中实现的,而companyId的获得经过一系列的过程,可以用一下数学的表达方式来表示: User user = userPersistence.findByPrimaryKey(userId);其中userId已经在上一级获得 companyId=user.getCompanyId(); userId=user.getUserId();(不知道得到的userId和作为参数引入的userId是否一样,不过通过user获得userId作为addResource()的参数肯定不错)。 而另一个重要参数groupId的获得要比这个复杂些。 long groupId=PortalUtil.getPortletGroupId(piId) pild=layout.getPild() layout=themeDisplay.getLayout() themeDisplay=(ThemeDisplay)request.getAttribute(WebKey.THEME_DISPLAY) 其中layout,themeDisplay,plid是在ation中获得,并把plid作为参数传递给serviceUtil的addEntry()方法 . 通过一级一级的传递,在localService中通过PortalUtil.getPortletGroupId(plid)获得,然后作为addResource的参数,实现把资源添加到数据中。其中companyId也是在这个阶段获得的。 另外portalAction,addCommunityPermission,addGuestPermission的数值是自己定义的,不是从系统中获得的。 删除资源deleteResource( 其中companyId和添加资源用到的companyId是一样的。 权限检查 permissionChecker.hasPermission(groupId,name,PrimaryKey(), actionId); 其中groupId和添加资源中的groupId是一样的,name是实体类的类名,primaryKey是实体的关键字,actionI对资源的操作。 先写这么多
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-07-24
PrimaryKey()是怎么获得的?
|
|
返回顶楼 | |
浏览 2422 次