package com.ks.tool.bkz.aspact;
|
|
import com.ks.tool.bkz.util.JsonUtil;
|
import com.ks.tool.bkz.util.StringUtil;
|
import com.ks.tool.bkz.util.UserUtil;
|
import com.ks.tool.bkz.util.annotation.Login;
|
import org.aspectj.lang.ProceedingJoinPoint;
|
import org.aspectj.lang.Signature;
|
import org.aspectj.lang.annotation.Around;
|
import org.aspectj.lang.annotation.Aspect;
|
import org.aspectj.lang.annotation.Before;
|
import org.aspectj.lang.reflect.MethodSignature;
|
import org.springframework.core.annotation.Order;
|
import org.springframework.stereotype.Component;
|
import org.springframework.web.context.request.RequestContextHolder;
|
import org.springframework.web.context.request.ServletRequestAttributes;
|
|
import javax.servlet.http.HttpServletRequest;
|
import java.io.PrintWriter;
|
import java.lang.reflect.Method;
|
|
//客户端登录验证
|
@Component
|
@Aspect
|
@Order(1)
|
public class NeedLoginAspect {
|
static {
|
System.out.println("登录验证初始化");
|
}
|
|
public static final String EDP = "execution(* com.ks.tool.bkz.controller..*.*(..))";
|
|
@Around(EDP)
|
public Object requestSerializable(ProceedingJoinPoint joinPoint) throws Throwable {
|
try {
|
Signature signature = joinPoint.getSignature();
|
MethodSignature methodSignature = (MethodSignature) signature;
|
Method targetMethod = methodSignature.getMethod();
|
Method realMethod = joinPoint.getTarget().getClass().getDeclaredMethod(joinPoint.getSignature().getName(),
|
targetMethod.getParameterTypes());
|
if (realMethod.isAnnotationPresent(Login.class)) {
|
//登录
|
ServletRequestAttributes servletContainer = (ServletRequestAttributes) RequestContextHolder
|
.getRequestAttributes();
|
HttpServletRequest request = servletContainer.getRequest();
|
String token = request.getHeader("token");
|
if (!StringUtil.isNullOrEmpty(token)) {
|
String account = UserUtil.getAccountFromToken(token);
|
if (!StringUtil.isNullOrEmpty(account)) {
|
Object obj = joinPoint.proceed(joinPoint.getArgs());
|
return obj;
|
}
|
}
|
//用户未登录
|
PrintWriter out = servletContainer.getResponse().getWriter();
|
out.print(JsonUtil.loadFalseResult(1001, "未登录"));
|
out.close();
|
return null;
|
}
|
} catch (Exception e) {
|
|
}
|
return joinPoint.proceed(joinPoint.getArgs());
|
}
|
|
|
}
|