这是以前写过的一个利用struts2的interceptor进行权限管理的笔记,以前是放电脑上的,今天偶然看到了,就贴出来,希望能对有需要的人有点帮助,同时自己以后需要看的时候也会更加方便点!
自己写一个interceptor,该interceptor继承interceptor接口,实现其中的intercept方法;然后在struts.xml
中进行配置,并把该interceptor置于默认的interceptor中,注意,这里在设置默认的intercept的时候
一定要加上原来的intercept,否则原来的就不可以用了,就不能用struts2了,具体来说是这样:
Xml代码
<interceptors>
<interceptor name="authentication" class="com.tiantian.tiantian.web.interceptor.AuthenticationInterceptor"></interceptor>
<interceptor-stack name="myInterceptorStack">
<interceptor-ref name="authentication"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="myInterceptorStack"/>
Java代码
@Override
public String intercept(ActionInvocation invoke) throws Exception {
// TODO Auto-generated method stub
HttpSession session = ServletActionContext.getRequest()。getSession();
ApplicationContext context = Util.getContext(ServletActionContext.getServletContext());
PriorityService priorityService = context.getBean(PriorityService.class);
String actionName = invoke.getProxy()。getActionName();
String methodName = invoke.getProxy()。getMethod();
if ("execute".equals(methodName))
methodName = "index";
int index = actionName.indexOf("/");
String name = actionName.substring(0, index);
Priority priority = priorityService.find(name, methodName);
Object obj = session.getAttribute("user");
if (obj != null) {
User currentUser = (User) obj;
ModuleService moduleService = context.getBean(ModuleService.class);
Module module = moduleService.findByUrl(name+"/"+methodName);
if (module != null) {
SystemDiaryService sdService = context.getBean(SystemDiaryService.class);
SystemDiary diary = new SystemDiary();
diary.setOperator(currentUser);
diary.setOperateModule(module.getName());
sdService.add(diary);
}
if (priority != null) {
boolean hasPermission = currentUser.hasPermission(priority);
if (!hasPermission) {
return "forbidden";
}
}
}
//
System.out.println("name = "+name + "**actionName = "+actionName+"*methodName = "+methodName);
String result = invoke.invoke();
return result;
} ModuleService moduleService = context.getBean(ModuleService.class);Module module = moduleService.findByUrl(name+"/"+methodName);if (module != null) { SystemDiaryService sdService = context.getBean(SystemDiaryService.class);
SystemDiary diary = new SystemDiary();
diary.setOperator(currentUser);
diary.setOperateModule(module.getName());
sdService.add(diary);
}
if (priority != null) {
boolean hasPermission = currentUser.hasPermission(priority);
if (!hasPermission) {
return "forbidden";
}
}
}
//
System.out.println("name = "+name + "**actionName = "+actionName+"*methodName = "+methodName);
String result = invoke.invoke();
return result;
}();
return result;
} result;
}
分享到:
相关推荐
Struts2作为一款流行的Java Web框架,其强大的功能之一就是拦截器(Interceptor)。拦截器在MVC模式中扮演着重要角色,它可以对请求进行预处理和后处理,提供了灵活的扩展机制,使得业务逻辑与表现层更加分离。本文...
在Struts2框架中,拦截器(Interceptor)是一种非常重要的机制,它能够帮助开发者实现诸如权限控制、事务管理、日志记录等跨切关注点的功能。通过定义不同的拦截器栈,可以灵活地组合各种功能,从而达到复用代码的...
Struts2框架的核心设计理念之一是MVC(Model-View-Controller),它将业务逻辑、数据和界面分离,使得应用程序更加清晰、易于维护。在Struts2框架中,**Interceptor(拦截器)**是一个关键组件,它允许开发者在特定...
此外,Struts2还支持拦截器(Interceptor)机制,这在权限管理中至关重要,因为拦截器可以在请求到达Action之前进行预处理,例如验证用户权限。 在权限管理方面,Apache Shiro或Spring Security是常用的工具。它们...
在"基于Struts2的用户权限管理"项目中,它被用来处理用户的登录、权限控制以及不同角色间的差异化访问。这个系统的核心目标是实现安全、高效的角色与权限分配,以确保不同级别的用户只能访问他们被授权的页面和功能...
Interceptor(拦截器)是Struts2框架的核心组件之一,它在Action调用前后执行,实现了业务逻辑的分离,增强了代码的复用性和灵活性。 Interceptor是Struts2实现AOP(面向切面编程)的一种方式,主要负责处理请求和...
在用户管理模块中,Struts2提供了丰富的动作类(Action)和结果(Result)配置,使得开发者可以轻松处理用户的登录、注册、权限验证等操作。通过ActionSupport基类和Interceptor拦截器,我们可以实现诸如验证码校验...
Struts2通过拦截器(Interceptor)机制实现了AOP(面向切面编程),提供了异常处理、数据验证、国际化等高级功能。 在"新闻管理系统"中,可能包含以下几个主要模块: 1. **新闻管理**:这是系统的核心部分,包括...
然而,在Struts1的原生设计中,并没有内置拦截器(Interceptor)这一概念,这与后来的Struts2框架有所不同。Struts2引入了拦截器,极大地增强了框架的灵活性和可扩展性。但是,由于Struts1的流行和项目需求,"saif...
在Struts2中,拦截器(Interceptor)是核心组件之一,它们在Action执行前后进行拦截,实现了如日志记录、权限检查、数据验证等业务逻辑。而"struts2 interceptor annotation plugin"则是Struts2框架提供的一种使用...
STRUTS2的配置文件(struts.xml)用于定义Action的映射,以及各种拦截器的配置,这些拦截器可以处理权限验证、日志记录等任务。 在本系统中,登录功能引入了验证码技术。验证码是一种防止机器自动操作的安全机制,...
在“权限管理系统”这个场景下,Struts2扮演着核心控制器的角色,帮助开发者处理用户请求,控制应用程序流程,并实现权限管理功能。 在Struts2中,权限管理通常涉及到以下几个关键知识点: 1. **Action类与结果...
项目可能使用了Struts2的拦截器(Interceptor)机制,如LoginInterceptor,来检查用户是否已登录,只有登录成功的管理员才能执行管理操作。同时,还需要实现角色和权限的管理,确保不同角色的用户只能访问其权限范围...
在"Struts2框架实现图书管理系统"这个项目中,我们将深入探讨如何利用Struts2来设计和实现一个用于管理图书信息的系统,包括对图书的基本信息进行添加、删除、修改和查询等核心功能。同时,项目还涉及到拦截器的使用...
安全方面,Struts2提供了拦截器(Interceptor)机制,可以集成Shiro或Spring Security进行权限控制。 总之,基于Struts2框架的名片管理系统是一个典型的JavaEE应用实例,它展示了如何利用现代Web框架来构建一个功能...
此外,Struts2还支持拦截器(Interceptor),这些拦截器可以添加额外的功能,如权限验证、日志记录等,增强了系统的灵活性和可扩展性。 其次,Hibernate是一个强大的ORM框架,它消除了直接使用SQL与数据库交互的...
2. **Interceptor(拦截器)**:Struts2的拦截器可以用来在Action执行前后添加额外的功能,如登录检查、权限验证等。一个定制的权限拦截器可以检查用户的角色,决定是否允许执行特定的Action。 3. **Role(角色)**...
Struts2提供了一套完善的拦截器(Interceptor)机制,可以方便地添加数据校验、事务管理等功能。通过在struts.xml中声明拦截器栈,我们可以控制Action执行前后的逻辑。 对于国际语言支持,Struts2提供了i18n(国际...
拦截器链是Struts2的一大特色,允许开发者自定义拦截器,实现如权限验证、日志记录、事务管理等功能。 4. **结果类型(Result)**:Action执行完成后,会返回一个结果类型,告诉框架如何处理后续的响应。Struts2内置...