/* ================================================================== * Created [2009-4-27 下午11:32:55] by Jon.King * ================================================================== * TSS * ================================================================== * mailTo:jinpujun@hotmail.com * Copyright (c) Jon.King, 2009-2012 * ================================================================== */ package com.jinhe.tss.um.permission.filter; import java.lang.reflect.Method; import org.aopalliance.intercept.MethodInterceptor; import org.aopalliance.intercept.MethodInvocation; import org.apache.log4j.Logger; import com.jinhe.tss.core.util.BeanUtil; import com.jinhe.tss.um.permission.PermissionHelper; /** * 资源操作时候,对资源进行权限过滤或检查的拦截器。 */ public class PermissionCheckInterceptor implements MethodInterceptor { Logger log = Logger.getLogger(getClass()); public Object invoke(MethodInvocation invocation) throws Throwable { Method targetMethod = invocation.getMethod(); /* 获取目标方法 */ Object[] args = invocation.getArguments(); /* 获取目标方法的参数 */ Object returnVal = invocation.proceed(); /* 调用目标方法的返回值 */ PermissionTag tag = targetMethod.getAnnotation(PermissionTag.class); // 取得注释对象 if (tag != null) { IPermissionFilter filter = (IPermissionFilter)BeanUtil.newInstance(tag.filter()); log.debug("对方法:" + targetMethod + " 进行权限检查(或过滤)开始。"); filter.doFilter(args, returnVal, tag, PermissionHelper.getInstance()); log.debug("对方法:" + targetMethod + " 权限检查(或过滤)结束。"); } return returnVal; } }