SpringBoot&Vue
昨日回顾 Base64 1、它是干什么的? 它可以进行编码和解码 2、能解决项目中的啥问题? 往网络上传递一个二进制文件怎么办?(图片,视频) 把一个二进制文件编码一个特殊的字符串,然后进行传递。 传输二进制—》传输字符串。 服务收到特殊字符串进行解码就能得到一个二进制。 3、他不是一个加密工具,它是一个编码解密工具 加密算法 hash,MD5,Bcrpty。 自带盐值,防止暴力破解。 四个框架都干了什么事情 ThreadLocale 1、客户端携带token发送请求 2、被拦截器拦截后开始校验token,如果token有误直接抛出异常。 3、token校验成功,从token字符串中解析出userToken对象,然后保存到THreadLocale中. 4、拦截器做放行 5、到了controller或service后,可以直接从THreadLocal中获取userToken。 6、解决安全问题还需要再controller执行之后把THreadLocal中的数据删除。 ThreadLocale是保存在当前线程里面, 一个请求发送过去,对于服务端而言就是一个线程。每个线程都有一个THreadLocal,所以他们是线程安全的。 ResponseBodyAdves 对controller返回的内容实现统一的包装(R) RBAC权限管理系统 基于角色来控制权限的。 用户,角色,权限。 1、先找到用户的角色 2、再找到角色对应的权限,从而也就得到了用户的权限 3、权限判断的时候干的事情是 a、当前用户拥有哪些权限。 –》手里有几把药匙 b、访问这个接口需要那个权限。—》开门需要那把药匙 今日内容 画图 权限的认证 之前做的是token的认证,只要token是正确的就可以正常访问接口。 现在还要做权限,用户有了该接口的权限才能访问接口。 要做权限的认证,必须要在接口之前来完成了。在接口之前干点的事情的技术有那些? 拦截器,AOP。 使用AOP+自定义注解来实现权限的校验。 自定义注解 package com.qf.application.core.aop.annotation; import java.lang.annotation.*; // 这三个注解就是原注解,任何一个注解上面都会有这三个注解 @Target({ElementType.METHOD}) // 表示该注解只能加载方法上面 // *.java --->*.class --->运行 @Retention(RetentionPolicy.RUNTIME) // 该注解的作用域 @Documented // 生成JavaDoc public @interface Permission { } @GetMapping("/map") @Permission() public Map<String, Object> testMap() { Map<String, Object> map = new HashMap<>(); map....