AOP-对切点请求参数对象的属性处理

问题情境:

在web系统对应的后台查询方法中,有一些鉴权问题的处理,每次都要根据当前登陆用户来获取权限对应的数据库字段,每次都要写一堆代码,感觉封装的话每次的使用的参数也不太一致,于是想到用aop的形式进行处理,主要对切面方法的请求参数进行处理。

解决方案:

代码如下:

@Before(value = "pointCut()")
    public void queryAreaIds(JoinPoint joinPoint) {
        Object param = joinPoint.getArgs()[0];
        try {
            //获取object中的data属性
            Field field = param.getClass().getDeclaredField("areaId");
            field.setAccessible(true);//设置data属性为可访问的

            String aredId =(String)field.get(param);
            List<String> roleAreaIds = getRoleAreaIds(aredId);
            Field areaIdsField = param.getClass().getDeclaredField("areaIds");
            areaIdsField.setAccessible(true);//设置data属性为可访问的
            if(roleAreaIds!=null){
                areaIdsField.set(param, roleAreaIds);
            }

        } catch (NoSuchFieldException | IllegalAccessException e) {
            e.printStackTrace();
        }

    }

解决思路:

因为请求的参数不同的方法的参数不一致,但某些属性是一致的,于是通过反射的形式获取参数字段,并对某些字段赋值。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值