package com.jun;
import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
import org.apache.log4j.Logger;
//创建Around处理应该实现MethodInterceptor接口
/**
* @author jun 拦截器Around处理类型的类
* @TIME Sep 20, 2008
*
*/
public class TestAuthorityInterceptor implements MethodInterceptor {
private User user;
//日志
private Logger logger = Logger.getLogger(this.getClass().getName());
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public Object invoke(MethodInvocation invock) throws Throwable {
String methodName = invock.getMethod().getName();
System.out.println(methodName);
if ("unRegistedUser".equals(user.getUsername())) {
System.out.println("未注册用户,无权利发帖子,请您先注册!");
return null;
}
if (("user".equals(user.getUsername()))
&& !("deleteInfo".equals(methodName))) {
System.out.println("注册用户,无权利删除帖子!");
return null;
}
if (("admin".equals(user.getUsername()))
&& ("deleteInfo".equals(methodName))) {
System.out.println("系统管理员,可以任意操作!");
return null;
}
// 方法执行,proceed()方法对连接点的整个拦截器链起作用,拦截器链中的每个拦截器都执行该方法,并返回它的返回值
Object result = null;
try{
logger.info("权限过滤正常!");
result = invock.proceed();
}catch(Exception e){
e.printStackTrace();
logger.error("权限过滤出现异常!");
}
return result;
}
}
- 1
- 2
前往页