好的网站制作,镇江网站建设流程,金溪网站建设,企业网站功能需求文档目录
本地文件上传
接口文档
业务实现
登录优化
SpringBoot集成redis
实现令牌主动失效机制
多环境开发 本地文件上传
接口文档 业务实现
创建FileUploadController类并编写请求方法 RestController
public class FileUploadController {PostMapping(/uploadRestController
public class FileUploadController {PostMapping(/upload)public ResultString upload(MultipartFile file) throws IOException {//把文件内容存储到本地磁盘中String Filename file.getOriginalFilename(); //自动获取文件名//保证文件名唯一 防止被覆盖String filename UUID.randomUUID() Filename.substring(Filename.lastIndexOf(.));//文件传输file.transferTo( new File(D:\\ck\\filename));//返回return Result.success(url访问地址……);}
}运行请求查看 查看目录 文件已传输成功 登录优化
令牌主动失效机制
登录成功后给浏览器响应令牌的同时把该令牌存储到redis中LoginInterceptor拦截器中需要验证浏览器携带的令牌并同时需要获取到redis中存储的与之相同的令牌当用户修改密码成功后删除redis中存储的旧令牌
SpringBoot集成redis
导入spring-boot-starter-data-redis起步依赖 !-- redis依赖--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId/dependency
在yml配置文件中, 配置redis连接信息 data:redis:host: localhostport: 6379
调用API(StringRedisTemplate)完成字符串的存取操作 SpringBootTest //如果在测试类上添加了这个注解那么将来单元测试方法执行之前会先初始化Spring容器
public class redis_test {Autowiredprivate StringRedisTemplate stringRedisTemplate; //注入StringRedisTemplate对象Testpublic void testSet(){//向redis中存储一个键值对ValueOperationsString, String Operations stringRedisTemplate.opsForValue();Operations.set(name,TiTi); //存入String o Operations.get(name); //获取System.out.println(o);}
} 实现令牌主动失效机制
修改login登录接口方法 Autowiredprivate StringRedisTemplate stringRedisTemplate; //注入StringRedisTemplate对象PostMapping(login)public ResultString login(Pattern(regexp ^\\S{5,16}$) String username, Pattern(regexp ^\\S{5,16}$) String password){//根据用户名查询用户User loginUser userService.findByUserName(username); //定义实例对象//判断用户是否存在if(loginUser null){return Result.error(用户名错误);}//判断密码是否正确,将传入的password参数转成密文再和数据库中的密文进行判断是否相同if(Md5Util.getMD5String(password).equals(loginUser.getPassword())){//登录成功MapString,Object claims new HashMap(); //定义map集合对象claims.put(id,loginUser.getId()); //添加idclaims.put(username,loginUser.getUsername()); //添加用户名//生成jwtString token JwtUtil.genToken(claims);//把token存储到redis中ValueOperationsString, String Operations stringRedisTemplate.opsForValue();Operations.set(token,token,1, TimeUnit.HOURS); //(键,值,过期时间1小时)return Result.success(token);}return Result.error(密码错误);} 在拦截器中修改从redis中获取token 在更新密码方法中设置更新密码就删除掉redis中的token 多环境开发 SpringBoot提供的Profiles可以用来隔离应用程序配置的各个部分并在特定环境下指定部分配置生效
三个横线用于分隔不同的配置环境
--- on-profile用于指定哪些配置属于哪个环境
spring:config:activate:on-profile: 环境名称active用于指定哪个环境生效
spring:profiles:active: 环境名称通过多个文件分别配置不同环境的属性 文件的名字为 application-环境名称.yml 在application.yml中激活环境 application.yml文件指定激活文件
spring:profiles:active: devgroup:dev: devServer,devDB,devSelf按照配置的类别把配置信息配置到不同的配置文件中application-分类名.yml在application.yml中定义分组 spring.profiles.group在application.yml中激活分组 spring.profiles.active