- 浏览: 4557334 次
-
最新评论
使用权限标签控制View层展示的内容
<iframe align="center" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog336280.html" frameborder="0" width="336" scrolling="no" height="280"></iframe>
在昨晚修改EasyJWeb的时候,在框架处理器中增加了一个全局Util的Map。同时增加了一个跟EasyJF的权限控制系统结合的AuthorizationUtil实现。下面是主要代码:
protected void createUtilContext(Context context) {
Object authorizationUtil = FrameworkEngine.getContainer()
.getBean(com.easyjf.util.AuthorizationUtil.class);
if (authorizationUtil != null) {
globalUtils.put("AUTH", authorizationUtil);
globalUtils.put("ROLE", authorizationUtil);
}
}
#if($AUTH.is("ADMIN")) 删除#end
在昨晚修改EasyJWeb的时候,在框架处理器中增加了一个全局Util的Map。同时增加了一个跟EasyJF的权限控制系统结合的AuthorizationUtil实现。下面是主要代码:
protected void createUtilContext(Context context) {
Object authorizationUtil = FrameworkEngine.getContainer()
.getBean(com.easyjf.util.AuthorizationUtil.class);
if (authorizationUtil != null) {
globalUtils.put("AUTH", authorizationUtil);
globalUtils.put("ROLE", authorizationUtil);
}
}
#if($AUTH.is("ADMIN")) 删除#end
在昨晚修改EasyJWeb的时候,在框架处理器中增加了一个全局Util的Map。同时增加了一个跟EasyJF的权限控制系统结合的AuthorizationUtil实现。下面是主要代码:
protected void createUtilContext(Context context) {
Object authorizationUtil = FrameworkEngine.getContainer()
.getBean(com.easyjf.util.AuthorizationUtil.class);
if (authorizationUtil != null) {
globalUtils.put("AUTH", authorizationUtil);
globalUtils.put("ROLE", authorizationUtil);
}
}
#if($AUTH.is("ADMIN")) 删除#end
在昨晚修改EasyJWeb的时候,在框架处理器中增加了一个全局Util的Map。同时增加了一个跟EasyJF的权限控制系统结合的AuthorizationUtil实现。下面是主要代码:
protected void createUtilContext(Context context) {
Object authorizationUtil = FrameworkEngine.getContainer()
.getBean(com.easyjf.util.AuthorizationUtil.class);
if (authorizationUtil != null) {
globalUtils.put("AUTH", authorizationUtil);
globalUtils.put("ROLE", authorizationUtil);
}
}
#if($AUTH.is("ADMIN")) 删除#end
在昨晚修改EasyJWeb的时候,在框架处理器中增加了一个全局Util的Map。同时增加了一个跟EasyJF的权限控制系统结合的AuthorizationUtil实现。下面是主要代码:
protected void createUtilContext(Context context) {
Object authorizationUtil = FrameworkEngine.getContainer()
.getBean(com.easyjf.util.AuthorizationUtil.class);
if (authorizationUtil != null) {
globalUtils.put("AUTH", authorizationUtil);
globalUtils.put("ROLE", authorizationUtil);
}
}
#if($AUTH.is("ADMIN")) 删除#end
在昨晚修改EasyJWeb的时候,在框架处理器中增加了一个全局Util的Map。同时增加了一个跟EasyJF的权限控制系统结合的AuthorizationUtil实现。下面是主要代码:
protected void createUtilContext(Context context) {
Object authorizationUtil = FrameworkEngine.getContainer()
.getBean(com.easyjf.util.AuthorizationUtil.class);
if (authorizationUtil != null) {
globalUtils.put("AUTH", authorizationUtil);
globalUtils.put("ROLE", authorizationUtil);
}
}
#if($AUTH.is("ADMIN")) 删除#end
在昨晚修改EasyJWeb的时候,在框架处理器中增加了一个全局Util的Map。同时增加了一个跟EasyJF的权限控制系统结合的AuthorizationUtil实现。下面是主要代码:
protected void createUtilContext(Context context) {
Object authorizationUtil = FrameworkEngine.getContainer()
.getBean(com.easyjf.util.AuthorizationUtil.class);
if (authorizationUtil != null) {
globalUtils.put("AUTH", authorizationUtil);
globalUtils.put("ROLE", authorizationUtil);
}
}
#if($AUTH.is("ADMIN")) 删除#end
在实际应用中,我们经常需要根据当前用户的操作权限来判断是否显示一新功能。如在论坛系统中,只有版主及管理才能删除贴子,因此在一般用户打开一个贴子的时候,就不需要出现“删除”这个连接。
权限系统标签接口的设计,在大多数应用中,以下接口中两个方法基本能满足大多数需求。
public interface AuthorizationUtil {
/**
* 根据名称判断用户角色,从而判断用户是否刻有该权限.roleName可以是单独的名称,大小写可以任意.可以包含空格等.
* 若要使用多个角色,可以使用+、|、~、,等符号来表示组合关系
* 使用方法:#if($ROLE.is("ADMIN"))删除#end
* 或:#if($ROLE.is("AMDIN,Manager"))删除所有#end
* @param roleName
* @return
*/
public boolean is(String roleName);
/**
* 判断一个用户是否对指定的对象有指定的操作权限
* @param operation 操作,"del","create","update","read"等
* 使用方法:#if($ROLE.is("del",$obj))删除该记录#end
* @param obj 操作的对象
* @return 如果具有操作权限
*/
public boolean is(String operation,Object obj);
}
权限系统标签接口的设计,在大多数应用中,以下接口中两个方法基本能满足大多数需求。
public interface AuthorizationUtil {
/**
* 根据名称判断用户角色,从而判断用户是否刻有该权限.roleName可以是单独的名称,大小写可以任意.可以包含空格等.
* 若要使用多个角色,可以使用+、|、~、,等符号来表示组合关系
* 使用方法:#if($ROLE.is("ADMIN"))删除#end
* 或:#if($ROLE.is("AMDIN,Manager"))删除所有#end
* @param roleName
* @return
*/
public boolean is(String roleName);
/**
* 判断一个用户是否对指定的对象有指定的操作权限
* @param operation 操作,"del","create","update","read"等
* 使用方法:#if($ROLE.is("del",$obj))删除该记录#end
* @param obj 操作的对象
* @return 如果具有操作权限
*/
public boolean is(String operation,Object obj);
}
在昨晚修改EasyJWeb的时候,在框架处理器中增加了一个全局Util的Map。同时增加了一个跟EasyJF的权限控制系统结合的AuthorizationUtil实现。下面是主要代码:
protected void createUtilContext(Context context) {
Object authorizationUtil = FrameworkEngine.getContainer()
.getBean(com.easyjf.util.AuthorizationUtil.class);
if (authorizationUtil != null) {
globalUtils.put("AUTH", authorizationUtil);
globalUtils.put("ROLE", authorizationUtil);
}
}
这样,在基于Spring2+JPA+EasyJWeb的应用中,可以在模板页面中使用下面的Velocity角本来进行权限控制。如:
#if($AUTH.is("ADMIN")) 删除#end
权限/角色的名称可以在系统运行的过程中自由设定。这样问题变得简单多了,不再需要访问底层的权限系统,也不在需要复杂的标签系统,就是调用这两个方法,而具这是在每一个展示的View中都开放的全局功能。
当然,也可以扩展一下模板标签系统,使用<role><a href="doDel();">删除</a>。当然我不喜欢后一种用法,因为总是会让页面人员把这个标签跟其它的标签搞混淆,而且也容易误删除,还是第一种方法看起直接,对于接受过我们半小时Velocity标签培训的页面制作及美工人员也应该会有同感。</role>
当然,如何让权限控制变得更加灵活,View层的使用更加方便直接、简易,想听听大家的看法。
在实际应用中,我们经常需要根据当前用户的操作权限来判断是否显示一新功能。如在论坛系统中,只有版主及管理才能删除贴子,因此在一般用户打开一个贴子的时候,就不需要出现“删除”这个连接。
权限系统标签接口的设计,在大多数应用中,以下接口中两个方法基本能满足大多数需求。
public interface AuthorizationUtil {
/**
* 根据名称判断用户角色,从而判断用户是否刻有该权限.roleName可以是单独的名称,大小写可以任意.可以包含空格等.
* 若要使用多个角色,可以使用+、|、~、,等符号来表示组合关系
* 使用方法:#if($ROLE.is("ADMIN"))删除#end
* 或:#if($ROLE.is("AMDIN,Manager"))删除所有#end
* @param roleName
* @return
*/
public boolean is(String roleName);
/**
* 判断一个用户是否对指定的对象有指定的操作权限
* @param operation 操作,"del","create","update","read"等
* 使用方法:#if($ROLE.is("del",$obj))删除该记录#end
* @param obj 操作的对象
* @return 如果具有操作权限
*/
public boolean is(String operation,Object obj);
}
权限系统标签接口的设计,在大多数应用中,以下接口中两个方法基本能满足大多数需求。
public interface AuthorizationUtil {
/**
* 根据名称判断用户角色,从而判断用户是否刻有该权限.roleName可以是单独的名称,大小写可以任意.可以包含空格等.
* 若要使用多个角色,可以使用+、|、~、,等符号来表示组合关系
* 使用方法:#if($ROLE.is("ADMIN"))删除#end
* 或:#if($ROLE.is("AMDIN,Manager"))删除所有#end
* @param roleName
* @return
*/
public boolean is(String roleName);
/**
* 判断一个用户是否对指定的对象有指定的操作权限
* @param operation 操作,"del","create","update","read"等
* 使用方法:#if($ROLE.is("del",$obj))删除该记录#end
* @param obj 操作的对象
* @return 如果具有操作权限
*/
public boolean is(String operation,Object obj);
}
在昨晚修改EasyJWeb的时候,在框架处理器中增加了一个全局Util的Map。同时增加了一个跟EasyJF的权限控制系统结合的AuthorizationUtil实现。下面是主要代码:
protected void createUtilContext(Context context) {
Object authorizationUtil = FrameworkEngine.getContainer()
.getBean(com.easyjf.util.AuthorizationUtil.class);
if (authorizationUtil != null) {
globalUtils.put("AUTH", authorizationUtil);
globalUtils.put("ROLE", authorizationUtil);
}
}
这样,在基于Spring2+JPA+EasyJWeb的应用中,可以在模板页面中使用下面的Velocity角本来进行权限控制。如:
#if($AUTH.is("ADMIN")) 删除#end
权限/角色的名称可以在系统运行的过程中自由设定。这样问题变得简单多了,不再需要访问底层的权限系统,也不在需要复杂的标签系统,就是调用这两个方法,而具这是在每一个展示的View中都开放的全局功能。
当然,也可以扩展一下模板标签系统,使用<role><a href="doDel();">删除</a>。当然我不喜欢后一种用法,因为总是会让页面人员把这个标签跟其它的标签搞混淆,而且也容易误删除,还是第一种方法看起直接,对于接受过我们半小时Velocity标签培训的页面制作及美工人员也应该会有同感。</role>
当然,如何让权限控制变得更加灵活,View层的使用更加方便直接、简易,想听听大家的看法。
在实际应用中,我们经常需要根据当前用户的操作权限来判断是否显示一新功能。如在论坛系统中,只有版主及管理才能删除贴子,因此在一般用户打开一个贴子的时候,就不需要出现“删除”这个连接。
权限系统标签接口的设计,在大多数应用中,以下接口中两个方法基本能满足大多数需求。
public interface AuthorizationUtil {
/**
* 根据名称判断用户角色,从而判断用户是否刻有该权限.roleName可以是单独的名称,大小写可以任意.可以包含空格等.
* 若要使用多个角色,可以使用+、|、~、,等符号来表示组合关系
* 使用方法:#if($ROLE.is("ADMIN"))删除#end
* 或:#if($ROLE.is("AMDIN,Manager"))删除所有#end
* @param roleName
* @return
*/
public boolean is(String roleName);
/**
* 判断一个用户是否对指定的对象有指定的操作权限
* @param operation 操作,"del","create","update","read"等
* 使用方法:#if($ROLE.is("del",$obj))删除该记录#end
* @param obj 操作的对象
* @return 如果具有操作权限
*/
public boolean is(String operation,Object obj);
}
权限系统标签接口的设计,在大多数应用中,以下接口中两个方法基本能满足大多数需求。
public interface AuthorizationUtil {
/**
* 根据名称判断用户角色,从而判断用户是否刻有该权限.roleName可以是单独的名称,大小写可以任意.可以包含空格等.
* 若要使用多个角色,可以使用+、|、~、,等符号来表示组合关系
* 使用方法:#if($ROLE.is("ADMIN"))删除#end
* 或:#if($ROLE.is("AMDIN,Manager"))删除所有#end
* @param roleName
* @return
*/
public boolean is(String roleName);
/**
* 判断一个用户是否对指定的对象有指定的操作权限
* @param operation 操作,"del","create","update","read"等
* 使用方法:#if($ROLE.is("del",$obj))删除该记录#end
* @param obj 操作的对象
* @return 如果具有操作权限
*/
public boolean is(String operation,Object obj);
}
在昨晚修改EasyJWeb的时候,在框架处理器中增加了一个全局Util的Map。同时增加了一个跟EasyJF的权限控制系统结合的AuthorizationUtil实现。下面是主要代码:
protected void createUtilContext(Context context) {
Object authorizationUtil = FrameworkEngine.getContainer()
.getBean(com.easyjf.util.AuthorizationUtil.class);
if (authorizationUtil != null) {
globalUtils.put("AUTH", authorizationUtil);
globalUtils.put("ROLE", authorizationUtil);
}
}
这样,在基于Spring2+JPA+EasyJWeb的应用中,可以在模板页面中使用下面的Velocity角本来进行权限控制。如:
#if($AUTH.is("ADMIN")) 删除#end
权限/角色的名称可以在系统运行的过程中自由设定。这样问题变得简单多了,不再需要访问底层的权限系统,也不在需要复杂的标签系统,就是调用这两个方法,而具这是在每一个展示的View中都开放的全局功能。
当然,也可以扩展一下模板标签系统,使用<role><a href="doDel();">删除</a>。当然我不喜欢后一种用法,因为总是会让页面人员把这个标签跟其它的标签搞混淆,而且也容易误删除,还是第一种方法看起直接,对于接受过我们半小时Velocity标签培训的页面制作及美工人员也应该会有同感。</role>
当然,如何让权限控制变得更加灵活,View层的使用更加方便直接、简易,想听听大家的看法。
在实际应用中,我们经常需要根据当前用户的操作权限来判断是否显示一新功能。如在论坛系统中,只有版主及管理才能删除贴子,因此在一般用户打开一个贴子的时候,就不需要出现“删除”这个连接。
权限系统标签接口的设计,在大多数应用中,以下接口中两个方法基本能满足大多数需求。
public interface AuthorizationUtil {
/**
* 根据名称判断用户角色,从而判断用户是否刻有该权限.roleName可以是单独的名称,大小写可以任意.可以包含空格等.
* 若要使用多个角色,可以使用+、|、~、,等符号来表示组合关系
* 使用方法:#if($ROLE.is("ADMIN"))删除#end
* 或:#if($ROLE.is("AMDIN,Manager"))删除所有#end
* @param roleName
* @return
*/
public boolean is(String roleName);
/**
* 判断一个用户是否对指定的对象有指定的操作权限
* @param operation 操作,"del","create","update","read"等
* 使用方法:#if($ROLE.is("del",$obj))删除该记录#end
* @param obj 操作的对象
* @return 如果具有操作权限
*/
public boolean is(String operation,Object obj);
}
权限系统标签接口的设计,在大多数应用中,以下接口中两个方法基本能满足大多数需求。
public interface AuthorizationUtil {
/**
* 根据名称判断用户角色,从而判断用户是否刻有该权限.roleName可以是单独的名称,大小写可以任意.可以包含空格等.
* 若要使用多个角色,可以使用+、|、~、,等符号来表示组合关系
* 使用方法:#if($ROLE.is("ADMIN"))删除#end
* 或:#if($ROLE.is("AMDIN,Manager"))删除所有#end
* @param roleName
* @return
*/
public boolean is(String roleName);
/**
* 判断一个用户是否对指定的对象有指定的操作权限
* @param operation 操作,"del","create","update","read"等
* 使用方法:#if($ROLE.is("del",$obj))删除该记录#end
* @param obj 操作的对象
* @return 如果具有操作权限
*/
public boolean is(String operation,Object obj);
}
在昨晚修改EasyJWeb的时候,在框架处理器中增加了一个全局Util的Map。同时增加了一个跟EasyJF的权限控制系统结合的AuthorizationUtil实现。下面是主要代码:
protected void createUtilContext(Context context) {
Object authorizationUtil = FrameworkEngine.getContainer()
.getBean(com.easyjf.util.AuthorizationUtil.class);
if (authorizationUtil != null) {
globalUtils.put("AUTH", authorizationUtil);
globalUtils.put("ROLE", authorizationUtil);
}
}
这样,在基于Spring2+JPA+EasyJWeb的应用中,可以在模板页面中使用下面的Velocity角本来进行权限控制。如:
#if($AUTH.is("ADMIN")) 删除#end
权限/角色的名称可以在系统运行的过程中自由设定。这样问题变得简单多了,不再需要访问底层的权限系统,也不在需要复杂的标签系统,就是调用这两个方法,而具这是在每一个展示的View中都开放的全局功能。
当然,也可以扩展一下模板标签系统,使用<role><a href="doDel();">删除</a>。当然我不喜欢后一种用法,因为总是会让页面人员把这个标签跟其它的标签搞混淆,而且也容易误删除,还是第一种方法看起直接,对于接受过我们半小时Velocity标签培训的页面制作及美工人员也应该会有同感。</role>
当然,如何让权限控制变得更加灵活,View层的使用更加方便直接、简易,想听听大家的看法。
在实际应用中,我们经常需要根据当前用户的操作权限来判断是否显示一新功能。如在论坛系统中,只有版主及管理才能删除贴子,因此在一般用户打开一个贴子的时候,就不需要出现“删除”这个连接。
权限系统标签接口的设计,在大多数应用中,以下接口中两个方法基本能满足大多数需求。
public interface AuthorizationUtil {
/**
* 根据名称判断用户角色,从而判断用户是否刻有该权限.roleName可以是单独的名称,大小写可以任意.可以包含空格等.
* 若要使用多个角色,可以使用+、|、~、,等符号来表示组合关系
* 使用方法:#if($ROLE.is("ADMIN"))删除#end
* 或:#if($ROLE.is("AMDIN,Manager"))删除所有#end
* @param roleName
* @return
*/
public boolean is(String roleName);
/**
* 判断一个用户是否对指定的对象有指定的操作权限
* @param operation 操作,"del","create","update","read"等
* 使用方法:#if($ROLE.is("del",$obj))删除该记录#end
* @param obj 操作的对象
* @return 如果具有操作权限
*/
public boolean is(String operation,Object obj);
}
权限系统标签接口的设计,在大多数应用中,以下接口中两个方法基本能满足大多数需求。
public interface AuthorizationUtil {
/**
* 根据名称判断用户角色,从而判断用户是否刻有该权限.roleName可以是单独的名称,大小写可以任意.可以包含空格等.
* 若要使用多个角色,可以使用+、|、~、,等符号来表示组合关系
* 使用方法:#if($ROLE.is("ADMIN"))删除#end
* 或:#if($ROLE.is("AMDIN,Manager"))删除所有#end
* @param roleName
* @return
*/
public boolean is(String roleName);
/**
* 判断一个用户是否对指定的对象有指定的操作权限
* @param operation 操作,"del","create","update","read"等
* 使用方法:#if($ROLE.is("del",$obj))删除该记录#end
* @param obj 操作的对象
* @return 如果具有操作权限
*/
public boolean is(String operation,Object obj);
}
在昨晚修改EasyJWeb的时候,在框架处理器中增加了一个全局Util的Map。同时增加了一个跟EasyJF的权限控制系统结合的AuthorizationUtil实现。下面是主要代码:
protected void createUtilContext(Context context) {
Object authorizationUtil = FrameworkEngine.getContainer()
.getBean(com.easyjf.util.AuthorizationUtil.class);
if (authorizationUtil != null) {
globalUtils.put("AUTH", authorizationUtil);
globalUtils.put("ROLE", authorizationUtil);
}
}
这样,在基于Spring2+JPA+EasyJWeb的应用中,可以在模板页面中使用下面的Velocity角本来进行权限控制。如:
#if($AUTH.is("ADMIN")) 删除#end
权限/角色的名称可以在系统运行的过程中自由设定。这样问题变得简单多了,不再需要访问底层的权限系统,也不在需要复杂的标签系统,就是调用这两个方法,而具这是在每一个展示的View中都开放的全局功能。
当然,也可以扩展一下模板标签系统,使用<role><a href="doDel();">删除</a>。当然我不喜欢后一种用法,因为总是会让页面人员把这个标签跟其它的标签搞混淆,而且也容易误删除,还是第一种方法看起直接,对于接受过我们半小时Velocity标签培训的页面制作及美工人员也应该会有同感。</role>
当然,如何让权限控制变得更加灵活,View层的使用更加方便直接、简易,想听听大家的看法。
在实际应用中,我们经常需要根据当前用户的操作权限来判断是否显示一新功能。如在论坛系统中,只有版主及管理才能删除贴子,因此在一般用户打开一个贴子的时候,就不需要出现“删除”这个连接。
权限系统标签接口的设计,在大多数应用中,以下接口中两个方法基本能满足大多数需求。
public interface AuthorizationUtil {
/**
* 根据名称判断用户角色,从而判断用户是否刻有该权限.roleName可以是单独的名称,大小写可以任意.可以包含空格等.
* 若要使用多个角色,可以使用+、|、~、,等符号来表示组合关系
* 使用方法:#if($ROLE.is("ADMIN"))删除#end
* 或:#if($ROLE.is("AMDIN,Manager"))删除所有#end
* @param roleName
* @return
*/
public boolean is(String roleName);
/**
* 判断一个用户是否对指定的对象有指定的操作权限
* @param operation 操作,"del","create","update","read"等
* 使用方法:#if($ROLE.is("del",$obj))删除该记录#end
* @param obj 操作的对象
* @return 如果具有操作权限
*/
public boolean is(String operation,Object obj);
}
权限系统标签接口的设计,在大多数应用中,以下接口中两个方法基本能满足大多数需求。
public interface AuthorizationUtil {
/**
* 根据名称判断用户角色,从而判断用户是否刻有该权限.roleName可以是单独的名称,大小写可以任意.可以包含空格等.
* 若要使用多个角色,可以使用+、|、~、,等符号来表示组合关系
* 使用方法:#if($ROLE.is("ADMIN"))删除#end
* 或:#if($ROLE.is("AMDIN,Manager"))删除所有#end
* @param roleName
* @return
*/
public boolean is(String roleName);
/**
* 判断一个用户是否对指定的对象有指定的操作权限
* @param operation 操作,"del","create","update","read"等
* 使用方法:#if($ROLE.is("del",$obj))删除该记录#end
* @param obj 操作的对象
* @return 如果具有操作权限
*/
public boolean is(String operation,Object obj);
}
在昨晚修改EasyJWeb的时候,在框架处理器中增加了一个全局Util的Map。同时增加了一个跟EasyJF的权限控制系统结合的AuthorizationUtil实现。下面是主要代码:
protected void createUtilContext(Context context) {
Object authorizationUtil = FrameworkEngine.getContainer()
.getBean(com.easyjf.util.AuthorizationUtil.class);
if (authorizationUtil != null) {
globalUtils.put("AUTH", authorizationUtil);
globalUtils.put("ROLE", authorizationUtil);
}
}
这样,在基于Spring2+JPA+EasyJWeb的应用中,可以在模板页面中使用下面的Velocity角本来进行权限控制。如:
#if($AUTH.is("ADMIN")) 删除#end
权限/角色的名称可以在系统运行的过程中自由设定。这样问题变得简单多了,不再需要访问底层的权限系统,也不在需要复杂的标签系统,就是调用这两个方法,而具这是在每一个展示的View中都开放的全局功能。
当然,也可以扩展一下模板标签系统,使用<role><a href="doDel();">删除</a>。当然我不喜欢后一种用法,因为总是会让页面人员把这个标签跟其它的标签搞混淆,而且也容易误删除,还是第一种方法看起直接,对于接受过我们半小时Velocity标签培训的页面制作及美工人员也应该会有同感。</role>
当然,如何让权限控制变得更加灵活,View层的使用更加方便直接、简易,想听听大家的看法。
在实际应用中,我们经常需要根据当前用户的操作权限来判断是否显示一新功能。如在论坛系统中,只有版主及管理才能删除贴子,因此在一般用户打开一个贴子的时候,就不需要出现“删除”这个连接。
权限系统标签接口的设计,在大多数应用中,以下接口中两个方法基本能满足大多数需求。
public interface AuthorizationUtil {
/**
* 根据名称判断用户角色,从而判断用户是否刻有该权限.roleName可以是单独的名称,大小写可以任意.可以包含空格等.
* 若要使用多个角色,可以使用+、|、~、,等符号来表示组合关系
* 使用方法:#if($ROLE.is("ADMIN"))删除#end
* 或:#if($ROLE.is("AMDIN,Manager"))删除所有#end
* @param roleName
* @return
*/
public boolean is(String roleName);
/**
* 判断一个用户是否对指定的对象有指定的操作权限
* @param operation 操作,"del","create","update","read"等
* 使用方法:#if($ROLE.is("del",$obj))删除该记录#end
* @param obj 操作的对象
* @return 如果具有操作权限
*/
public boolean is(String operation,Object obj);
}
权限系统标签接口的设计,在大多数应用中,以下接口中两个方法基本能满足大多数需求。
public interface AuthorizationUtil {
/**
* 根据名称判断用户角色,从而判断用户是否刻有该权限.roleName可以是单独的名称,大小写可以任意.可以包含空格等.
* 若要使用多个角色,可以使用+、|、~、,等符号来表示组合关系
* 使用方法:#if($ROLE.is("ADMIN"))删除#end
* 或:#if($ROLE.is("AMDIN,Manager"))删除所有#end
* @param roleName
* @return
*/
public boolean is(String roleName);
/**
* 判断一个用户是否对指定的对象有指定的操作权限
* @param operation 操作,"del","create","update","read"等
* 使用方法:#if($ROLE.is("del",$obj))删除该记录#end
* @param obj 操作的对象
* @return 如果具有操作权限
*/
public boolean is(String operation,Object obj);
}
在昨晚修改EasyJWeb的时候,在框架处理器中增加了一个全局Util的Map。同时增加了一个跟EasyJF的权限控制系统结合的AuthorizationUtil实现。下面是主要代码:
protected void createUtilContext(Context context) {
Object authorizationUtil = FrameworkEngine.getContainer()
.getBean(com.easyjf.util.AuthorizationUtil.class);
if (authorizationUtil != null) {
globalUtils.put("AUTH", authorizationUtil);
globalUtils.put("ROLE", authorizationUtil);
}
}
这样,在基于Spring2+JPA+EasyJWeb的应用中,可以在模板页面中使用下面的Velocity角本来进行权限控制。如:
#if($AUTH.is("ADMIN")) 删除#end
权限/角色的名称可以在系统运行的过程中自由设定。这样问题变得简单多了,不再需要访问底层的权限系统,也不在需要复杂的标签系统,就是调用这两个方法,而具这是在每一个展示的View中都开放的全局功能。
当然,也可以扩展一下模板标签系统,使用<role><a href="doDel();">删除</a>。当然我不喜欢后一种用法,因为总是会让页面人员把这个标签跟其它的标签搞混淆,而且也容易误删除,还是第一种方法看起直接,对于接受过我们半小时Velocity标签培训的页面制作及美工人员也应该会有同感。</role>
当然,如何让权限控制变得更加灵活,View层的使用更加方便直接、简易,想听听大家的看法。
相关推荐
学习JSP需要掌握如何创建动态内容,使用脚本元素、指令标签以及EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library)。 2. **Servlet**:虽然描述中没有直接提到Servlet,但它是JSP的基础,...
JPivot是一款基于Mondrian的在线分析处理(OLAP)前端展示工具,专门解决OLAP的展示层问题。它提供了一系列的JSP标签,使得开发者能够在网页中方便地构建和控制OLAP应用。下面将详细阐述各个主要标签的功能和用法。 ...
6. **视图(View)**:通常使用JSP或Thymeleaf等技术来实现,展示数据和交互界面。 7. **国际化与权限资源**:可能包含国际化配置文件(`.properties`)和权限资源文件,用于多语言支持和权限判断。 8. **启动脚本...
而J2EE架构中的标签库是实现视图层(View Layer)解耦和增强可维护性的重要工具。 标签库(Tag Library)是JavaServer Pages (JSP) 技术的一部分,允许开发者使用自定义的HTML-like标签来编写动态网页。这些标签...
ThinkPHP提供了方便的授权机制,可以在控制器中通过`Acl`类或者`auth`标签进行权限验证。 9. **数据创建**:本节的重点是实际在系统中创建这些数据,包括角色、权限、用户以及它们之间的关系。这涉及到数据库操作,...
【标题】"基于 .NET Core 3.1 MVC 的权限管理系统"揭示了这是一个利用Microsoft的.NET Core 3.1框架,结合MVC(Model-View-Controller)设计模式开发的权限管理应用程序。此系统旨在为用户提供安全、高效的角色和...
6. **页面(JSP)**:展示数据和提供用户交互,通常会使用Struts2的标签库简化页面开发。 7. **安全配置**:如Spring Security的配置文件,定义了权限控制规则,如访问过滤、角色分配等。 8. **测试类**:对各个...
1. **MVC模式**:MVC是软件设计模式的一种,它将应用程序分为三个相互独立的部分:Model(模型)负责处理数据和业务逻辑,View(视图)用于展示数据,而Controller(控制器)接收用户输入并调用模型和视图进行响应。...
【标题】中的“基于jsp+servlet实现的网上购物系统,包含用户权限控制”是指一个使用Java Web技术,包括JavaServer Pages (JSP) 和Servlet,构建的电子商务平台。这个系统不仅实现了基本的商品浏览、购物车功能,还...
SpringMVC作为Spring框架的一部分,负责处理HTTP请求和响应,实现了模型-视图-控制器(Model-View-Controller,MVC)设计模式,使得业务逻辑、数据展示和用户交互分离,提高了代码组织的清晰度。开发者可以通过注解...
1. **MVC模式**:系统采用经典的Model-View-Controller架构,模型层负责数据处理,视图层负责展示,控制器负责协调模型和视图的交互,使系统结构清晰,易于维护。 2. **数据库设计**:包括用户表、角色表、权限表和...
Cactus的CMS可能提供了诸如内容发布、版本控制、元数据管理、分类和标签等功能,以支持灵活的内容组织和展示。 在Cactus中,.NET C#语言用于编写业务逻辑和控制层代码,这是一门强大的面向对象的编程语言,具有丰富...
相较于Struts1,Struts2是一个全新的架构,提供了更灵活的控制层和更丰富的功能。它通过FilterDispatcher过滤器来处理所有的HTTP请求,根据ActionMapper的规则决定调用哪个Action以及调用哪个方法。 在Struts2中,...
3. **Struts框架**:作为MVC(Model-View-Controller)架构的一部分,Struts负责控制应用程序的流程。它处理HTTP请求,调用业务逻辑,并将结果传递给视图(通常是JSP页面)。在这个系统中,Struts可能被用来定义URL...
开发者可以通过自定义标签轻松地展示图书列表的多页内容,而无需在JSP页面上写入复杂的Java代码。这不仅提高了代码的复用性,也降低了视图层的复杂度,使得页面更加专注于呈现内容。 **4. 验证码功能** 为了防止...
6. **权限管理**:由于涉及到硬件控制,应用需要在AndroidManifest.xml中声明相应的权限,例如访问硬件设备的`<uses-feature>`标签,以及读写系统设置的`<uses-permission>`标签。 7. **测试与调试**:进行充分的...
这个项目为初学者提供了一个很好的实践平台,展示了如何使用Struts2框架实现一个包含用户登录注册和权限控制的Web应用。通过研究这个示例,开发者可以深入了解Struts2的工作原理,以及如何在实际项目中运用MVC模式和...
前后端分离是指将前端视图层与后端业务逻辑层分离,前端主要负责用户交互和展示,后端则专注于数据处理和业务逻辑。本系统采用了这一模式,前端可能使用Vue.js或者React等现代化的JavaScript框架,后端则通过提供...
最后,前端展示部分,可以使用JSP页面来渲染不同权限级别的内容。在JSP中,我们可以使用Struts的标签库来条件判断,只显示用户有权限访问的部分。 总的来说,"Struts1.x+DButils实现的基于角色资源的权限"项目展示...