package cn.org.xinke.annotation;
|
|
import cn.org.xinke.entity.User;
|
import org.aspectj.lang.ProceedingJoinPoint;
|
import org.aspectj.lang.annotation.Around;
|
import org.aspectj.lang.annotation.Aspect;
|
import org.aspectj.lang.annotation.Pointcut;
|
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 javax.servlet.http.HttpServletResponse;
|
|
/**
|
* @description 登录切面
|
* @author cinco
|
* @date 2019-1-21
|
*/
|
@Aspect
|
@Component
|
public class LoginAspect {
|
|
@Pointcut("execution(public * cn.org.xinke.controller.*.*(..)) && @annotation(cn.org.xinke.annotation.Login)")
|
public void pointcut(){}
|
|
@Around("pointcut()")
|
public Object Interceptor(ProceedingJoinPoint pjp) throws Throwable {
|
// 获取请求/响应对象
|
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
|
HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();
|
// 登录认证
|
User loginUser = (User) request.getSession().getAttribute( "LOGIN_USER" );
|
if (loginUser == null) {
|
response.sendRedirect( loadContextPath(request) + "/login.html" );
|
}
|
try {
|
return pjp.proceed();
|
} catch (Throwable throwable) {
|
throw throwable;
|
}
|
}
|
|
public String loadContextPath(HttpServletRequest request) {
|
String contextPath = request.getContextPath();
|
if(contextPath.equals("/")) {
|
contextPath = "";
|
}
|
return contextPath;
|
}
|
}
|