切面保存web访问记录

package com.hn.xf.device.api.rest.aspect;
import com.hn.xf.device.api.rest.authorization.manager.TokenManager;
import com.hn.xf.device.api.rest.authorization.model.TokenModel;
import com.hn.xf.device.api.rest.config.Constants;
import com.hn.xf.device.service.log.service.AppLogService;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.beans.factory.annotation.Autowired;
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.util.Arrays;

/**
 * @Created with IntelliJ IDEA.
 * @author: fengshufang
 * @Date: 2018/1/22
 * @Description APP日志
 */
@Aspect
@Component
@Slf4j
public class WebLogAspect {
    @Autowired
    AppLogService appLogService;
    @Autowired
    private TokenManager manager;

    @Pointcut("execution(public * com.hn.xf.device.api.rest.controller..*(..))")
    public void webLog() {
    }

    @Before("webLog()")
    public void doBefore(JoinPoint joinPoint) throws Throwable {
        // 接收到请求,记录请求内容
        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        HttpServletRequest request = attributes.getRequest();
        String authorization = request.getHeader(Constants.AUTHORIZATION);
        String user="";
        String cpid = request.getHeader(Constants.CPID);
        if (cpid == null ) {
            //验证token
            TokenModel model = manager.getToken(authorization);
            if(model!=null)
            {
                user=model.getUserId().toString();
            }
        }
        else {
            user=cpid;
        }
        if (Arrays.toString(joinPoint.getArgs()).toString().length() < 500) {
            appLogService.add(user, joinPoint.getSignature().getName(), request.getRequestURL().toString() + request.getRemoteAddr() + Arrays.toString(joinPoint.getArgs()).toString());
        } else {
            String tempData = Arrays.toString(joinPoint.getArgs()).toString().substring(0,499);
            appLogService.add(user, joinPoint.getSignature().getName(), request.getRequestURL().toString() + request.getRemoteAddr() + tempData);

        }

    }

    @AfterReturning(returning = "ret", pointcut = "webLog()")
    public void doAfterReturning(Object ret) throws Throwable {
        // 处理完请求,返回内容
        //log.info("RESPONSE : " + ret);
    }

}

  

原文地址:https://www.cnblogs.com/anakin/p/8907324.html

时间: 2024-10-10 19:43:18

切面保存web访问记录的相关文章

利用Squid反向代理搭建CDN缓存服务器加快Web访问速度

2011年11月26日 ? Web服务器架构 ? 评论数 2 案例:Web服务器:域名www.abc.com IP:192.168.21.129 电信单线路接入访问用户:电信宽带用户.移动宽带用户出现问题:电信用户打开www.abc.com正常,移动用户打开www.abc.com很慢,甚至打不开解决方案:在移动机房放置一台CDN代理服务器,通过智能DNS解析,让电信用户直接访问Web服务器.让移动用户访问CDN代理服务器,解决移动用户访问Web服务器慢的问题具体操作:CDN代理服务器:系统:Ce

m2014-architecture-imgserver-&gt;利用Squid反向代理搭建CDN缓存服务器加快Web访问速度

案例:Web服务器:域名www.abc.com IP:192.168.21.129 电信单线路接入访问用户:电信宽带用户.移动宽带用户出现问题:电信用户打开www.abc.com正常,移动用户打开www.abc.com很慢,甚至打不开解决方案:在移动机房放置一台CDN代理服务器,通过智能DNS解析,让电信用户直接访问Web服务器.让移动用户访问CDN代理服务器,解决移动用户访问Web服务器慢的问题具体操作:CDN代理服务器:系统:CentOS 5.5 主机名:cdn.abc.com IP:192

Web开发基本准则-55实录-Web访问安全

Web开发工程师请阅读下面的前端开发准则,这是第一部分,强调了过去几年里我们注意到的Web工程师务须处理的Web访问安全基础点.尤其是一些从传统软件开发转入互联网开发的工程师,请仔细阅读,不要因为忽视这些基础点而制造一个又一个的漏洞或突发事件. Web开发基本准则-55实录-Web访问安全 提纲: Web访问安全 缓存策略 存储介质连接池 业务降级 并发请求的处理 关键词: Session Hijacking,XSS(Cross Site Scripting),SQLi(SQL Injectio

今晚九点|如何使用 Python 分析 web 访问日志?

主题:如何使用 Python 分析 Web 访问日志 内容 Python 基础 字符串.字典.文件.时间 Web 访问日志 实战 提问 主讲师:KK 多语言混搭工程师,热爱开源技术,喜欢GET新技能,5年 PHP.Python 项目开发经验,带领团队完成多个中.小型项目开发,对安全.云等多个领域富有浓厚兴趣,擅长于 WEB 安全开发.性能优化.分布式应用开发&设计等多方面,做事认真负责,乐于分享技能,现任 51Reboot.com Python 实战班讲师 任何语言都有使用场景,只有合适和不合适

监控svn访问记录(转载)

由于公司要求对svn的访问记录进行监控,所以需要对svn的服务器的配置做一些修改.其实也不是很麻烦,只是要做一些调整而己,之前的svn服务端是采用Apache的HTTP协议做为访问svn仓库的方式,所以只需要开启Apache的访问日志即可.基本方法如下:1:找到Apache的配置文件httpd.conf.2:用文本编辑器打开这个文件,查找包括"access_log"."error_log"这两个字符串的行,如果这些行前面有"#"这样的标记,那么就

使用Nginx反向代理和proxy_cache缓存搭建CDN服务器加快Web访问速度

碰到问题: 移动用户访问web服务器www.osyunwei.com很慢 解决办法: 1.在移动机房放置一台nginx反向代理服务器 2.通过域名DNS智能解析,所有移动用户访问www.osyunwei.com时解析到nginx反向代理服务器 3.nginx反向代理服务器与web服务器之间采用专线连接 系统运维  www.osyunwei.com  温馨提醒:qihang01原创内容©版权所有,转载请注明出处及原文链接 说明: 1.web服务器 线路:电信 IP:192.168.21.129 域

模拟web访问有登录且有验证码的登录后抓取数据

模拟web访问有登录且有验证码的登录后抓取数据 1 取验证码 1 在窗体上放一个picturebox (imgValidate)存放获取的验证码图片, 2 用浏览器的开发者工具firefox (f12) 分析出验证码的网址 private void GetValidateImage() { cookies = new CookieContainer(); string strUrl = "http://www.xxx.com/ValidateCodePicture.aspx?Key="

java学习笔记—使用HttpSession实现QQ的访问记录(31)

1. 编写QQ空间数据类(QQS.java) public class QQS { private static LinkedHashMap<Integer, String> qqs = new LinkedHashMap<Integer, String>(); static{ qqs.put(10001, "张三"); qqs.put(10002, "李四"); qqs.put(10003, "王五"); qqs.put

此项目的默认Web访问模式设置为文件共享, 但是无法从路径(此为转贴)

故障现象: 当你打开ASP.NET Web项目时,如果出现这样的错误提示:提示窗口标题: Web访问失败提示内容: 此项目的默认Web访问模式设置为文件共享, 但是无法从路径“...”打开“...”处的项目文件夹.返回的错误是: 无法打开Web项目“”.返回的错误是: 无法打开Web项目“...”.文件路径“...”怀URL“...”不符.这两者需要映射到相同的服务器位置.HTTP错误404: Not Found ...... 处理方法: 到“C:/Documents and Settings/