这是以前写过的一个利用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;
}
分享到:
相关推荐
综合使用servlet filter与struts2 interceptor对权限进行验证。
十二、总结 本教程对struts2的基本知识进行了一些说明,关于struts2的更多详细内容应参看struts2的官方文档及提供的app实例。 下面对struts2的基本执行流程作一简要说明,此流程说明可以结合官方提供的struts2结构图...
在struts2中使用拦截器(Interceptor)控制登录和权限[汇编].pdf
利用Struts2的核心技术----拦截器实现权限控制。详细代码详解
使用Struts2实现用户权限拦截、重点是掌握拦截器的使用和配置方法,通过案例的学习,就能掌握struts中拦截器的使用方法,让我们能快速上手
本文实例为大家分享了Struts2框架拦截器实例的示例代码,供大家参考,具体内容如下 在看拦截器的小例子的前我们先来看看sturts2的原理 struts2自己是有拦截器的,通过拦截器可以拦截用户请求,并作出处理 拦截器...
拦截器可以说相当于是个过滤器:就是把你不想要的或不想显示的内容给过滤掉。拦截器可以抽象出一部分代码可以用来完善原来的...这样如果有新增权限的话,不用在Action里修改任何代码,直接在Interceptor里修改就行了。
java笔试题集(达内科技) j2ee面试题 Struts2权限interceptor JAVA工程师EJB面试题集
6.采用二进制运算实现权限控制,利用interceptor实现粗粒度控制以及重写struts2 标签实现细粒度权限控制.采用二位运算能够使得权限运算更加快捷,而且极大 降低 session存储量,有效利用服务器资源. .系统中通过 cxf ...
比如说,struts2中Action在执行之前会首先执行一些Interceptor,完成诸如权限验证/属性注入/Validation/国际化等等的功能, 我看过一个比较好的功能是,利用strut2的拦截器和*-Validation.xml文件以及标签(strut2...
支持Struts2 不支持Hibernate
{12.9} 授权与回收权限}{161}{section.12.9} {12.10}示例}{162}{section.12.10} {12.10.1}exists}{165}{subsection.12.10.1} {12.11}集合操作}{165}{section.12.11} {12.11.1}union}{166}{subsection.12.11.1} ...
118 8.3.5 Struts2配置文件 119 8.4 Action的配置方式 121 8.4.1 动态方法调用 121 8.4.2 设置action元素的method属性 122 8.4.3 使用通配符配置action 122 8.4.4 默认action 123 8.5 拦截器Interceptor 123 8.5.1 ...
action:存放struts2控制类的包 dao:数据库访问封装 enm:系统中使用到的常量包,这里不是用的常量,用的是枚举替代常量 entity:hibernate对应的orm与数据库表一一对应的实体类 filter:Log4jFormatFilter(格式化...
我们对拦截器并不陌生,无论是 Struts 2 还是 Spring MVC 中都提供了拦截器功能,它可以根据 URL 对请求进行拦截,主要应用于登陆校验、权限验证、乱码解决、性能监控和异常处理等功能上。Spring Boot 同样提供了...
本资源是包含过滤器、拦截器的一个完整的MyEclipse项目。...拦截器--它由spring管理,只对action起作用,不能拦截jsp页面、图片等其他资源。执行顺序:过滤前 - 拦截前 - Action处理 - 拦截后 - 过滤后