springboot基于aop redis token实现token验证和权限验证

 开始之前了解: ras 公钥密钥 解析加密 token,aop实现自定义注解,登录用到一点mybatis plus,这篇文章只有后端代码

源码:https://gitee.com/sun-jianhui/leyou(在dev-sjh分支下)

用到的数据库(数据库有点绕)

 

 管理员表

 角色表

权限表

 角色-权限 关联表

 

token生成,解析,加密

JwtUtils

public class JwtUtils {
    /**
     *  私钥加密token
     * @param data 需要加密的数据(载荷内容)
     * @param expireMinutes 过期时间,单位:分钟
     * @param privateKey 私钥
     * @return
     */
    public static String generateToken(Object data, int expireMinutes, PrivateKey         privateKey) throws Exception {
        //1 获得jwt构建对象
        JwtBuilder jwtBuilder = Jwts.builder();
        //2 设置数据
        if( data == null ) {
            throw new RuntimeException("数据不能为空");
        }
        BeanInfo beanInfo = Introspector.getBeanInfo(data.getClass());
        PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
        for (PropertyDescriptor propertyDescriptor : propertyDescriptors) {
            // 获得属性名
            String name = propertyDescriptor.getName();
            // 获得属性值
            Object value = propertyDescriptor.getReadMethod().invoke(data);
            if(value != null) {
                jwtBuilder.claim(name,value);
            }
        }
        //3 设置过期时间
        jwtBuilder.setExpiration(DateTime.now().plusMinutes(expireMinutes).toDate());
        //4 设置加密
        jwtBuilder.signWith(SignatureAlgorithm.RS256, privateKey);
        //5 构建
        return jwtBuilder.compact();
    }

    /**
     * 通过公钥解析token
     * @param token 需要解析的数据
     * @param publicKey 公钥
     * @param beanClass 封装的JavaBean
     * @return
     * @throws Exception
     */
    public static <T> T  getObjectFromToken(String token, PublicKey publicKey, Class<T> beanClass) throws Exception {
        //1 获得解析后内容
        Claims body = Jwts
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
基于SpringBoot框架的美食发现系统是一个能够让用户方便查找美食资源、了解美食文化、获取美食新闻的平台。其系统设计与实现主要分为以下几个方面。 1.功能需求分析:首先明确系统功能需求,包括用户注册、登录、浏览食谱、点赞、评论、收藏等。并要充分考虑用户体验,在系统设计时保证简洁易用、快速响应、数据及时准确。 2.技术选型:基于SpringBoot的框架、MyBatis的ORM映射技术、MySQL的关系型数据库、Redis的缓存技术、AOP的切面编程技术等,保证系统的稳定性、性能和安全性。 3.数据模型设计:使用ER模型来设计系统实体关系,如用户、食谱、评论、收藏等,明确表结构、字段和约束、主外键关系等。使用MySQL数据库建表,并进行合理的索引设计,保证系统查询效率和速度。 4.系统架构设计:采用分层架构设计,包括Web层、Service层、Repository层、Redis缓存层等,各层之间通过Spring的依赖注入来协同工作。另外采用RESTful API风格来设计系统接口,保证系统的接口稳定,易扩展和维护。 5.系统功能实现:通过开发各种API接口、Filter、Listener, Interceptor等实现用户的登录、注册、浏览食谱、点赞、评论、收藏等功能。同时,对于用户个人资料采用JWT-Token技术进行加密传输,保证用户安全性。所有API均可以响应JSON格式数据,同时通过SpringAOP技术进行日志记录和事务管理。 6.部署和测试:对于系统总体架构采用微服务的部署方式,分模块进行独立部署,提高系统的可靠性和响应速度。同时采用单元测试、功能测试、压力测试等多种测试方法,确保系统良好运行。 以上是基于SpringBoot框架的美食发现系统的设计与实现,其中涉及到的技术和环节有许多,都需要严谨的操作和优秀的技能才能实现一个高品质的、稳定的、高性能的美食发现系统。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值