2008-02-14
liferay新增权限(二)
接着(一)讲,在做持久化的时候会在新增的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,这个里面有这些参数的获得方法.有这个权限后,就可以把权限控制到每一个元素上.
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,这个里面有这些参数的获得方法.有这个权限后,就可以把权限控制到每一个元素上.
评论
flyingcn
2008-06-25
我真的真的真的很奇怪,博主太强了,你是怎么知道这些内容!
要不是看到你的这篇文章,我真的要自己重写系统了
要不是看到你的这篇文章,我真的要自己重写系统了
雪飞南国
2008-04-15
我也是刚进公司学习这个东西,权限这块比较复杂。看得我头晕,幸好已有些眉目。你的文章也对我很有帮助。共同学习!~
Tyler_Zhou
2008-04-14
http: //docs.huihoo.com/liferay/4.3/这个网址不错,我记下来了,对雪飞南国 表示感谢.
Tyler_Zhou
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表,在这个过程中他的判断分支是很多的,有兴趣大家可以去看一下他是怎么做的,这里我就不多讲了。
权限这块 我觉得你说的太粗了 liferay中所有的权限验证都是在围绕permissionChecker.hasPermission()转不管check也好(以及check调用的)contains也好。大家最好参考http: //docs.huihoo.com/liferay/4.3/portlet-development-guide/ch05.html这个,然后自己看看源码。
---------------------------------------------------------
你说的是对的,权限的核心就是permissionChecker这个类,在这里我只是讲了如何去用这个类按照liferay的操作方式来开发自已的权限,至这个类里面做了什么我这里并没有讲。简单说一下,他先是看缓存中有没有记录,没有再看是否登陆,然后再去找表resource_,resourceCode,最后才是permission表,在这个过程中他的判断分支是很多的,有兴趣大家可以去看一下他是怎么做的,这里我就不多讲了。
Tyler_Zhou
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表,在这个过程中他的判断分支是很多的,有兴趣大家可以去看一下他是怎么做的,这里我就不多讲了。
权限这块 我觉得你说的太粗了 liferay中所有的权限验证都是在围绕permissionChecker.hasPermission()转不管check也好(以及check调用的)contains也好。大家最好参考http: //docs.huihoo.com/liferay/4.3/portlet-development-guide/ch05.html这个,然后自己看看源码。
---------------------------------------------------------
你说的是对的,权限的核心就是permissionChecker这个类,在这里我只是讲了如何去用这个类按照liferay的操作方式来开发自已的权限,至这个类里面做了什么我这里并没有讲。简单说一下,他先是看缓存中有没有记录,没有再看是否登陆,然后再去找表resource_,resourceCode,最后才是permission表,在这个过程中他的判断分支是很多的,有兴趣大家可以去看一下他是怎么做的,这里我就不多讲了。
Tyler_Zhou
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表,在这个过程中他的判断分支是很多的,有兴趣大家可以去看一下他是怎么做的,这里我就不多讲了。
权限这块 我觉得你说的太粗了 liferay中所有的权限验证都是在围绕permissionChecker.hasPermission()转不管check也好(以及check调用的)contains也好。大家最好参考http: //docs.huihoo.com/liferay/4.3/portlet-development-guide/ch05.html这个,然后自己看看源码。
---------------------------------------------------------
你说的是对的,权限的核心就是permissionChecker这个类,在这里我只是讲了如何去用这个类按照liferay的操作方式来开发自已的权限,至这个类里面做了什么我这里并没有讲。简单说一下,他先是看缓存中有没有记录,没有再看是否登陆,然后再去找表resource_,resourceCode,最后才是permission表,在这个过程中他的判断分支是很多的,有兴趣大家可以去看一下他是怎么做的,这里我就不多讲了。
雪飞南国
2008-04-14
权限这块 我觉得你说的太粗了 liferay中所有的权限验证都是在围绕permissionChecker.hasPermission()转 不管check也好(以及check调用的)contains也好。大家最好参考http://docs.huihoo.com/liferay/4.3/portlet-development-guide/ch05.html这个,然后自己看看源码。
libin2722
2008-03-27
能不能再说得详细点,order表结构是什么样的,在后台和jsp页面是怎么调用呢?
aaronfeng80
2008-02-19
不用自动生成持久化代码行吗?那些代码都是必需的吗?
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 56643 次
- 性别:

- 来自: 湖北

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
liferay新增权限(二)
我真的真的真的很奇怪,博主太强了,你是怎么知道这些内容! 要不是看到你的这篇文 ...
-- by flyingcn -
liferay5.0 plugins sdk开 ...
慢慢来吧,用plugin做开发,慢慢的你会发觉生命周期、classLoader之 ...
-- by devilbaby -
liferay5.0 plugins sdk开 ...
呵呵,完整的资料没有,就是到处在网上找,这个过程异常的痛苦.
-- by Tyler_Zhou -
liferay5.0 plugins sdk开 ...
写的不错啊! 有这方面的资料?
-- by hatlar -
liferay4.3.2增加社区(网 ...
老大知道怎么修改liferay上的logo图标么?
-- by hatlar






评论排行榜