这是以前写过的一个利用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;
}
分享到:
相关推荐
综合使用servlet filter与struts2 interceptor对权限进行验证。
利用Struts2的核心技术----拦截器实现权限控制。详细代码详解
使用Struts2实现用户权限拦截、重点是掌握拦截器的使用和配置方法,通过案例的学习,就能掌握struts中拦截器的使用方法,让我们能快速上手
在struts2中使用拦截器(Interceptor)控制登录和权限[汇编].pdf
方式一,实现Interceptor接口。 28 方式二、继承AbstractInterceptor抽象类 29 方式三、继承MethodFilterInteceptor类 30 3.使用来MethodFilterInterceptor灵活拦截 32 4.使用默认的execAndWait拦截器 33 5. ...
6.采用二进制运算实现权限控制,利用interceptor实现粗粒度控制以及重写struts2 标签实现细粒度权限控制.采用二位运算能够使得权限运算更加快捷,而且极大 降低 session存储量,有效利用服务器资源. .系统中通过 cxf ...
拦截器可以说相当于是个过滤器:就是把你不想要的或不想显示的内容给过滤掉。拦截器可以抽象出一部分代码可以用来完善原来的...这样如果有新增权限的话,不用在Action里修改任何代码,直接在Interceptor里修改就行了。
2.比如每个人执行action之前,我可以查看他们有没有这个权限执行这个action。 如果不设置拦截器,你要在每种action方法之前设置判定程序,非常繁琐。 拦截器interceptor体现了一种编程理念,叫做AOP(面向切面编程)...
java笔试题集(达内科技) j2ee面试题 Struts2权限interceptor JAVA工程师EJB面试题集
比如说,struts2中Action在执行之前会首先执行一些Interceptor,完成诸如权限验证/属性注入/Validation/国际化等等的功能, 我看过一个比较好的功能是,利用strut2的拦截器和*-Validation.xml文件以及标签(strut2...
支持Struts2 不支持Hibernate
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(格式化...
{7.1}Java的文件系统管理}{103}{section.7.1} {7.2}回调模式与FileFilter}{104}{section.7.2} {7.3}\ttfamily RandomAccessFile}{106}{section.7.3} {7.4}基本类型数据序列化}{108}{section.7.4} {7.5}String的...
我们对拦截器并不陌生,无论是 Struts 2 还是 Spring MVC 中都提供了拦截器功能,它可以根据 URL 对请求进行拦截,主要应用于登陆校验、权限验证、乱码解决、性能监控和异常处理等功能上。Spring Boot 同样提供了...
本资源是包含过滤器、拦截器的一个完整的MyEclipse项目。...拦截器--它由spring管理,只对action起作用,不能拦截jsp页面、图片等其他资源。执行顺序:过滤前 - 拦截前 - Action处理 - 拦截后 - 过滤后