当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
Struts2的interceptor实现权限管理
发布时间:2011/5/12 12:40:26 来源:城市学习网 编辑:ziteng

  这是以前写过的一个利用struts2的interceptor进行权限管理的笔记,以前是放电脑上的,今天偶然看到了,就贴出来,希望能对有需要的人有点帮助,同时自己以后需要看的时候也会更加方便点!

  说明一点:这个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);

  } [NextPage]

  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;         }

广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved