这是以前写过的一个利用struts2的interceptor进行权限管理的笔记,以前是放电脑上的,今天偶然看到了,就贴出来,希望能对有需要的人有点帮助,同时自己以后需要看的时候也会更加方便点!
说明一点:这个interceptor里面的代码是根据我特定的项目写的,所以请有需要的人不要盲目的照搬!
自己写一个interceptor,该interceptor继承interceptor接口,实现其中的intercept方法;然后在struts.xml
中进行配置,并把该interceptor置于默认的interceptor中,注意,这里在设置默认的intercept的时候
一定要加上原来的intercept,否则原来的就不可以用了,就不能用struts2了,具体来说是这样:
<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"/>
@Override
public String intercept(ActionInvocation invoke) throws Exception {
// TODO Auto-generated method stub
HttpSession session = ServletActionContext.getRequest().getSession();
String actionName = invoke.getProxy().getActionName();//获取action的名称
String methodName = invoke.getProxy().getMethod();//获取执行的方法
if ("execute".equals(methodName))
methodName = "index";
int index = actionName.indexOf("/");
String name = actionName.substring(0, index);
//priorityService通过Spring注入
Priority priority = priorityService.find(name, methodName);
Object obj = session.getAttribute("user");
if (obj != null) {
User currentUser = (User) obj;
//moduleService利用Spring注入
Module module = moduleService.findByUrl(name+"/"+methodName);
if (module != null) {
//sdService通过Spring注入
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;
}
分享到:
相关推荐
开发者可以通过实现`org.apache.struts2.interceptor.Interceptor`接口或继承`org.apache.struts2.interceptor.StrutsInterceptor`抽象类来自定义拦截器。在自定义拦截器时,需要重写`intercept()`方法,实现自己的...
在Struts2框架中,Interceptor(拦截器)扮演着极其关键的角色,它不仅能够增强框架的灵活性,还能提供一系列强大的功能,包括但不限于权限控制、事务管理、数据验证等。本文将深入探讨Struts2 Interceptor的原理、...
2. **如何实现**:Struts2提供了一个灵活的Interceptor框架,开发者可以通过实现Interceptor接口来自定义拦截器,也可以通过继承已有的拦截器实现来进行扩展。 3. **配置方式**:Interceptor的配置通过Struts2的配置...
在Struts2框架中,拦截器(Interceptor)是一种非常重要的机制,它能够帮助开发者实现诸如权限控制、事务管理、日志记录等跨切关注点的功能。通过定义不同的拦截器栈,可以灵活地组合各种功能,从而达到复用代码的...
"saif(struts1 interceptor)"插件实现了类似Struts2的拦截器机制,使开发者可以在Struts1中创建和配置拦截器,实现对请求的拦截和处理。以下是一些关键知识点: 1. **拦截器链**:在Struts1中,拦截器被组织成一个...
在这个“Struts2拦截器实现权限控制demo”中,我们将深入探讨如何利用拦截器来实现细粒度的用户权限管理。 首先,我们需要了解Struts2中的拦截器工作原理。拦截器是基于Java的动态代理模式实现的,它们按照配置的...
此外,Struts2还支持拦截器(Interceptor)机制,这在权限管理中至关重要,因为拦截器可以在请求到达Action之前进行预处理,例如验证用户权限。 在权限管理方面,Apache Shiro或Spring Security是常用的工具。它们...
在"基于Struts2的用户权限管理"项目中,它被用来处理用户的登录、权限控制以及不同角色间的差异化访问。这个系统的核心目标是实现安全、高效的角色与权限分配,以确保不同级别的用户只能访问他们被授权的页面和功能...
在Struts2中,拦截器(Interceptor)是核心组件之一,它们在Action执行前后进行拦截,实现了如日志记录、权限检查、数据验证等业务逻辑。而"struts2 interceptor annotation plugin"则是Struts2框架提供的一种使用...
在"Struts2框架实现图书管理系统"这个项目中,我们将深入探讨如何利用Struts2来设计和实现一个用于管理图书信息的系统,包括对图书的基本信息进行添加、删除、修改和查询等核心功能。同时,项目还涉及到拦截器的使用...
这篇博客文章“struts2拦截器实现权限控制”深入探讨了如何利用Struts2的拦截机制来执行用户访问权限的验证。 在Struts2中,拦截器是基于AOP(面向切面编程)的概念设计的,它们在Action调用前后执行,可以添加额外...
在“权限管理系统”这个场景下,Struts2扮演着核心控制器的角色,帮助开发者处理用户请求,控制应用程序流程,并实现权限管理功能。 在Struts2中,权限管理通常涉及到以下几个关键知识点: 1. **Action类与结果...
Struts2通过拦截器(Interceptor)机制实现了AOP(面向切面编程),提供了异常处理、数据验证、国际化等高级功能。 在"新闻管理系统"中,可能包含以下几个主要模块: 1. **新闻管理**:这是系统的核心部分,包括...
2. **Interceptor(拦截器)**:Struts2的拦截器可以用来在Action执行前后添加额外的功能,如登录检查、权限验证等。一个定制的权限拦截器可以检查用户的角色,决定是否允许执行特定的Action。 3. **Role(角色)**...
基于Struts2的个人信息管理系统是使用这一框架来设计和实现的一个典型示例,它涵盖了用户管理、行程管理和文件操作等多个核心功能。 在用户管理模块中,Struts2提供了丰富的动作类(Action)和结果(Result)配置,...
**基于Struts2实现报道管理系统** Struts2是一款强大的MVC框架,用于构建Java Web应用程序。在报道管理系统中,Struts2起到了核心架构的作用,它提供了模型-视图-控制器的设计模式,使得开发者能够更有效地组织和...
在“struts实现的权限分配”这一主题中,我们将深入探讨如何使用Struts来设计和实现一个安全的权限管理系统。 首先,我们需要理解权限分配的基本概念。在Web应用程序中,权限分配是确保不同用户或角色访问不同资源...
2. **Interceptor**: 拦截器是Struts2中的重要概念,它可以看作是在Action调用前后执行的一系列方法,用于实现如日志记录、事务管理、权限检查等功能。 3. **Result**: 结果是Action执行后的输出,通常用来决定如何...
本示例"Spring+Hibernate+Struts2+EasyUI基本权限管理框架"提供了一个全面的解决方案,旨在帮助初学者理解和掌握这些核心技术的集成与应用。下面将分别介绍这四个主要组件以及它们在权限管理中的作用。 1. **Spring...