论坛首页 Java企业应用论坛

liferay新增权限(二)

浏览 6091 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-02-14   最后修改:2008-11-16
接着(一)讲,在做持久化的时候会在新增的portlet包下面有一个service包(参考自动生成持久化代码那篇文章),增加一个名为permission的包,增加orderPermission.java,内容如下:

public static void check(
PermissionChecker permissionChecker, long plid, long categoryId,
String actionId)
throws PortalException, SystemException, Exception {

if (!contains(permissionChecker, plid, categoryId, actionId)) {
throw new PrincipalException();
}
}

public static void check(
PermissionChecker permissionChecker, long categoryId,
String actionId)
throws PortalException, SystemException, Exception  {

if (!contains(permissionChecker, categoryId, actionId)) {
throw new PrincipalException();
}
}

public static void check(
PermissionChecker permissionChecker, CategoryEntry category,
String actionId)
throws PortalException, SystemException {

if (!contains(permissionChecker, category, actionId)) {
throw new PrincipalException();
}
}

public static boolean contains(
PermissionChecker permissionChecker, long pld, long categoryId,
String actionId)
throws PortalException, SystemException, Exception  {

if (categoryId == ProductCategoryUtil.DEFAULT_PARENT_CATEGORY_ID) {
return PortletPermissionUtil.contains(
permissionChecker, pld, "PROTLET_NAME", actionId);
}
else {
return contains(permissionChecker, categoryId, actionId);
}
}

public static boolean contains(
PermissionChecker permissionChecker, long categoryId,
String actionId)
throws PortalException, SystemException, Exception {

CategoryEntry category =
CategoryEntryServiceUtil.findByPrimaryKey(categoryId);

return contains(permissionChecker, category, actionId);
}

public static boolean contains(
PermissionChecker permissionChecker, CategoryEntry category,
String actionId)
throws PortalException, SystemException {

return permissionChecker.hasPermission(
category.getGroupId(), CategoryEntry.class.getName(),
category.getCategoryId(), actionId);
}
一个check对应一个contains,两个用在不同的场合,check用在后台持久化操作时候会抛出一个权限不足的错误,而contains用在JSP只是用来验证权限的.其实可以看出最后都是调用permissionChecker.hasPermission方法的,四个参数:1社区ID,2元素class名,3主键,4所操作的权限(要和order.xml中定义的权限名相同).还有一个PortletPermissionUtil.contains方法,这个是用来验证当前portlet操作权限的,他有四个参数:1permissionChecker,2当前layout.getPlid(),3portlet名,4所操作权限.
至于里面的参数的获得可以参照一下liferay原码中的shopping card,这个里面有这些参数的获得方法.有这个权限后,就可以把权限控制到每一个元素上.
   发表时间:2008-02-19  
不用自动生成持久化代码行吗?那些代码都是必需的吗?
0 请登录后投票
   发表时间:2008-03-27  
能不能再说得详细点,order表结构是什么样的,在后台和jsp页面是怎么调用呢?
0 请登录后投票
   发表时间:2008-04-14  
权限这块 我觉得你说的太粗了 liferay中所有的权限验证都是在围绕permissionChecker.hasPermission()转  不管check也好(以及check调用的)contains也好。大家最好参考http://docs.huihoo.com/liferay/4.3/portlet-development-guide/ch05.html这个,然后自己看看源码。
0 请登录后投票
   发表时间:2008-04-14  

雪飞南国 19 分钟前
权限这块 我觉得你说的太粗了 liferay中所有的权限验证都是在围绕permissionChecker.hasPermission()转不管check也好(以及check调用的)contains也好。大家最好参考http: //docs.huihoo.com/liferay/4.3/portlet-development-guide/ch05.html这个,然后自己看看源码。
---------------------------------------------------------
你说的是对的,权限的核心就是permissionChecker这个类,在这里我只是讲了如何去用这个类按照liferay的操作方式来开发自已的权限,至这个类里面做了什么我这里并没有讲。简单说一下,他先是看缓存中有没有记录,没有再看是否登陆,然后再去找表resource_,resourceCode,最后才是permission表,在这个过程中他的判断分支是很多的,有兴趣大家可以去看一下他是怎么做的,这里我就不多讲了。
0 请登录后投票
   发表时间:2008-04-14  

雪飞南国 19 分钟前
权限这块 我觉得你说的太粗了 liferay中所有的权限验证都是在围绕permissionChecker.hasPermission()转不管check也好(以及check调用的)contains也好。大家最好参考http: //docs.huihoo.com/liferay/4.3/portlet-development-guide/ch05.html这个,然后自己看看源码。
---------------------------------------------------------
你说的是对的,权限的核心就是permissionChecker这个类,在这里我只是讲了如何去用这个类按照liferay的操作方式来开发自已的权限,至这个类里面做了什么我这里并没有讲。简单说一下,他先是看缓存中有没有记录,没有再看是否登陆,然后再去找表resource_,resourceCode,最后才是permission表,在这个过程中他的判断分支是很多的,有兴趣大家可以去看一下他是怎么做的,这里我就不多讲了。
0 请登录后投票
   发表时间:2008-04-14  

雪飞南国 19 分钟前
权限这块 我觉得你说的太粗了 liferay中所有的权限验证都是在围绕permissionChecker.hasPermission()转不管check也好(以及check调用的)contains也好。大家最好参考http: //docs.huihoo.com/liferay/4.3/portlet-development-guide/ch05.html这个,然后自己看看源码。
---------------------------------------------------------
你说的是对的,权限的核心就是permissionChecker这个类,在这里我只是讲了如何去用这个类按照liferay的操作方式来开发自已的权限,至这个类里面做了什么我这里并没有讲。简单说一下,他先是看缓存中有没有记录,没有再看是否登陆,然后再去找表resource_,resourceCode,最后才是permission表,在这个过程中他的判断分支是很多的,有兴趣大家可以去看一下他是怎么做的,这里我就不多讲了。
1 请登录后投票
   发表时间:2008-04-14  
http: //docs.huihoo.com/liferay/4.3/这个网址不错,我记下来了,对雪飞南国 表示感谢.
0 请登录后投票
   发表时间:2008-04-15  
我也是刚进公司学习这个东西,权限这块比较复杂。看得我头晕,幸好已有些眉目。你的文章也对我很有帮助。共同学习!~
0 请登录后投票
   发表时间:2008-06-25  
我真的真的真的很奇怪,博主太强了,你是怎么知道这些内容!

要不是看到你的这篇文章,我真的要自己重写系统了
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics