前段时间逛javaeye获得灵感,部分重新设计了公司项目的权限功能(如有雷同纯属巧合),现在在博客里总结一下。
原理是利用webwork拦截器拦截action,但细节处千差万别,下面看看我的。
先假设一个场景:
1、表单A有CRUD4个操作,分别对应4个权限。
2、每个操作分别对应若干action,如Create操作里包括Aaction、Baction。
3、当用户拥有C权限时,他应该能执行Aaction、Baction。
下面是我的实现:
1、将用户权限放在用户表的权限字段中,如放入字符串“C-R-U-D”。
2、新建一个Purview类,是一个普通java类用于设置权限。如:
public class Purview{
private Boolean create;
private Boolean retrieve;
private Boolean update;
……
public Boolean getCreate() {
return create;
}
public void setCreate(Boolean create) {
this.create = create;
}
……
}
3、用户登录时,根据权限字段中的记录,将Purview类中的属性设为true,然后将设置好的Purview类放入session中。如:
String yhql = yonghu.getLanaction();//lanaction是权限字段
String[] lanac;
if(StringHelper.isNotEmpty(yhql)){
Purview purview = new Purview();
lanac = yhql.split("-");
for(int i=0,len=lanac.length; i<len; i++){
if(lanac[i].equals("C")){
purview.setCreate(true);
}
else if(lanac[i].equals("R")){
purview.setRetrieve(true);
}
……
}
Map map = ActionContext.getContext().getSession();
map.put("quanli", purview);
}
4、当用户执行某个action时,拦截器从session中获取当前用户权限,判断其是否具有访问权限。如:
if(purview!=null){//purview为从session中获取的Purview类
if(action instanceof RenAction){//action为Aaction对应的Action类
if(actionName.equals("Aaction")//actionName为xml里的action名
|| actionName.equals("Baction") ){
if(!purview.getCreate()){
throw new Exception("对不起,您没有此权限");
}
}
else if(actionName.equals("Caction")){
if(!purview.getRetrieve()){
throw new Exception("对不起,您没有此权限");
}
}
……
……
大概先写这么多吧。
分享到:
相关推荐
4. **Interceptor(拦截器)**:类似于AOP(面向切面编程),提供预处理和后处理功能,例如日志、权限验证、事务控制等。 5. **Result**:负责将Action执行的结果转发到相应的视图,可以是JSP、Freemarker、...
WebWork的拦截器允许你在Action执行前后插入额外的逻辑,如日志记录、权限验证等。在`struts.xml`中,你可以定义一个拦截器栈,并将它应用于特定的Action或所有Action。 **七、总结** 通过"struts2Demo"这个简单的...
**Interceptor(拦截器)**:拦截器是Struts2的一个强大特性,它们按照预定义的顺序在Action调用前后执行,提供了如日志、权限验证、事务管理等功能。开发者可以通过自定义拦截器来扩展框架的功能。 **结果(Result...
总的来说,"Struts 2.1权威指南基于WebWork核心的MVC开发"涵盖了从基础概念到高级特性的全面内容,包括但不限于Action、拦截器、OGNL、配置文件、结果类型等,是学习和掌握Struts 2.1框架的宝贵资料。通过深入学习并...
拦截器是Struts.2框架的一大特色,它允许开发者在Action执行前后添加额外的处理逻辑,如权限检查、日志记录、数据绑定等。通过自定义拦截器,可以实现高度灵活的业务逻辑控制。同时,Struts.2提供了多种结果类型,如...
《Struts2权威指南--基于WebWork核心的MVC开发》是针对Java Web开发者的一本经典教程,尤其适合那些希望深入了解Struts2框架及其在MVC模式下的应用的人群。这本书的前三个章节主要涵盖了Struts2的基础知识,WebWork...
总的来说,"Struts 2权威指南--基于WebWork核心的MVC开发"这本书将引导读者全面了解和掌握Struts 2框架的各个方面,包括其核心组件、配置方式、拦截器机制以及与视图的交互等,是Java Web开发者必备的参考书籍。...
《Struts.2权威指南——基于WebWork核心的MVC开发》是一本深入解析Struts.2框架的经典著作,旨在帮助开发者全面理解并熟练掌握基于WebWork核心的模型视图控制器(Model-View-Controller,简称MVC)架构在Web应用开发...
3. Interceptors(拦截器):拦截器是WebWork2.0的一个强大功能,允许在Action调用前后插入自定义逻辑,如权限验证、日志记录等。 二、WebWork2.0主要特性 1. 智能表单绑定:WebWork2.0支持自动将HTTP请求参数绑定...
1. **拦截器(Interceptor)**:Struts.2提供了一套强大的拦截器机制,可以对Action执行前后的各种操作进行定制化处理,如权限控制、事务管理、输入验证等。 2. **类型转换和校验**:Struts.2支持自动的参数类型转换...
4. **Interceptors(拦截器)**:WebWork引入了拦截器的概念,它们在Action执行前后执行,可以实现通用的功能,如权限检查、日志记录等。在源码中,你会看到这些拦截器的实现。 5. **Value Stack(值栈)**:...
3. **拦截器(Interceptors)**:WebWork 使用拦截器来执行一些预处理或后处理任务,如权限验证、日志记录等。拦截器可以在Action执行前后插入自定义逻辑,增强了系统功能的灵活性。 4. **异常处理**:WebWork 提供...
Struts 2是Java平台上的一个开源MVC框架,它基于WebWork的核心技术,提供了强大的动作调度、拦截器和结果映射等功能,极大地简化了Web应用程序的开发。本指南将深入探讨Struts 2框架的核心概念和技术,以及如何利用...
4. **拦截器(Interceptors)**:拦截器允许在Action执行前后插入额外的功能,如日志记录、事务管理、权限检查等。学习如何编写和配置拦截器能提高代码的复用性和可维护性。 5. **结果(Results)**:Results定义了...
4. **拦截器**:拦截器是Struts 2的一个重要特性,它们在Action调用前后执行,可以实现如日志记录、权限检查、数据验证等功能。理解如何创建自定义拦截器并将其链式组合使用。 5. **配置与注解**:Struts 2支持XML...
WebWork框架基于拦截器(Interceptor)的概念,提供了一种更加灵活的方式来处理HTTP请求。与传统的Servlet模型相比,WebWork提供了一个更加模块化和可扩展的框架,使得开发者能够更容易地管理和维护大型Web应用程序...