登陆记录切面
import javax.servlet.http.HttpServletRequest;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Pointcut;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
public class LoginHistoryAop {
private static Logger logger = LoggerFactory.getLogger(LoginHistoryAop.class);
@Autowired
private LoginHistoryService loginHistoryService;
@Pointcut("execution(* com.xxx.controller.LoginController.login(..))")
public void controller() {
}
@AfterReturning("controller()")
private void afterLogin(JoinPoint joinPoint) {
ServletRequestAttributes sra = (ServletRequestAttributes)
(RequestContextHolder.getRequestAttributes());
HttpServletRequest request = sra.getRequest();
User loginUser = (User) SecurityUtils.getSubject().getPrincipal();
String ip = IPUtils.getIP(request);
String ua = request.getHeader(HttpHeaders.USER_AGENT);
UserAgent userAgent = UserAgent.parseUserAgentString(ua);
String os = userAgent.getOperatingSystem().getName();
String browserName = userAgent.getBrowser().getName();
String browserVersion = userAgent.getBrowserVersion().getVersion();
LoginHistory loginHistory = new LoginHistory();
loginHistory.setUser(loginUser);
loginHistory.setIp(ip);
loginHistory.setUa(ua);
loginHistory.setOs(os);
loginHistory.setBrowserName(browserName);
loginHistory.setBrowserVersion(browserVersion);
loginHistoryService.insert(loginHistory);
}
}