通过AOP实现加解密和验签

本文介绍了如何通过AOP和注解实现加解密及验签功能,无需改动AOP代码即可适配不同需求。文中提到,加解密方法需实现特定接口,加密实体类需继承基础实体类。SpringUtil工具类用于辅助,实体类可通过注解或字段指定解密密文。此外,自定义注解、接口、实现类和切面配置也进行了详细说明,确保在多参数场景下准确解密目标字符串。
摘要由CSDN通过智能技术生成

目标:通过注解参数的修改,在不改动AOP的情况下,适配不同的加解密和验签需求,在AOP中对加密密文解密后传递到接口。

在使用过程中,具体实现加解密的方法必须实现定义的接口,需要加密的某个参数实体类需要继承定义的基本实体类。

SpringUtil工具类

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;

@Component
public class SpringUtil implements ApplicationContextAware {

    private static Logger logger = LoggerFactory.getLogger(SpringUtil.class);

    private static ApplicationContext applicationContext;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        if(SpringUtil.applicationContext == null) {
            SpringUtil.applicationContext = applicationContext;
        }
        logger.info("ApplicationContext配置成功,applicationContext对象:{}",SpringUtil.applicationContext);
    }

    public static ApplicationContext getApplicationContext() {
        return applicationContext;
    }

    public static Object getBean(String name) {
        return getApplicationContext().getBean(name);
    }

    public static <T> T getBean(Class<T> clazz) {
        return getApplicationContext().getBean(clazz);
    }

    public static <T> T getBean(String name,Class<T> clazz) {
        return getApplicationContext().getBean(name,clazz);
    }

}

密文实体类

@Data
public class BaseVO {
    // 加密密文
    private String encryptStr;
}

需要解密的实体类,继承密文实体类,也可以不继承实体类,不继承实体类在使用的时候,需要在该实体类中新增一个密文字段,在接口中注明,AOP就会直接从该实体类中获取加密密文。

继承baseVO

@Data
@NoArgsConstructor
@AllArgsConstructor
public class BusinessVO extends BaseVO{
    private String id;
    private String name;
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值