自定义拦截器 package net.xdclass.online_xdclass.interceptor; import com.fasterxml.jackson.databind.ObjectMapper; import io.jsonwebtoken.Claims; import net.xdclass.online_xdclass.utils.JWTUtils; import net.xdclass.online_xdclass.utils.JsonData; import org.apache.commons.lang3.StringUtils; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.....
session共享、分布式缓存 单机tomcat应用登录检验 sesssion保存在浏览器和应用服务器会话之间 用户登录成功,服务端会保存一个session,当然客户端有一个sessionId 客户端会把sessionId保存在cookie中,每次请求都会携带这个sessionId 分布式应用中session共享 真实的应用不可能单节点部署,所以就有个多节点登录session共享的问题需要解决 tomcat支持session共享,但是有广播风暴;用户量大的时候,占用资源就严重,不推荐 使用redis存储token: 服务端使用UUID生成随机64位或者128位token,放入redis中,然后返回给客户端并存储在cookie中 用户每次访问都携带此token,服务端去redis中校验是否有此用户即可 分布式应用下登录检验解决方案 JWT 什么是JWT JWT 是一个开放标准,它定义了一种用于简洁,自包含的用于通信双方之间以 JSON 对象的形式安全传递信息的方法。 可以使用 HMAC 算法或者是 RSA 的公钥密钥对进行签名 简单来说: 就是通过一定规范来....
# 手机号的唯一性 为了保证手机号的唯一性,在phone字段上添加UNIQUE索引 //增加唯一索引 CREATE TABLE `user` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(128) DEFAULT NULL COMMENT '昵称', `pwd` varchar(124) DEFAULT NULL COMMENT '密码', `head_img` varchar(524) DEFAULT NULL COMMENT '头像', `phone` varchar(64) DEFAULT '' COMMENT '手机号', `create_time` datetime DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`id`), UNIQUE KEY `phone` (`phone`) ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8; 又或者可以根据手机号查询用户信息,判断用户是否已经存在(手机号已经....
引入依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.4.1</version> <relativePath/&g....
自定义异常 XDException src/main/java/net/xdclass/online_xdclass/exception/XDException.java package net.xdclass.online_xdclass.exception; import net.xdclass.online_xdclass.utils.JsonData; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; /** * 异常处理类 */ @ControllerAdvice public class CustomExceptionHandler {....
视频详情 修改domain Video 中添加 chapterlist package net.xdclass.online_xdclass.domain; import java.util.Date; import java.util.List; /** * 小滴课堂 视频对象 * * `id` int(11) unsigned NOT NULL AUTO_INCREMENT, * `title` varchar(524) DEFAULT NULL COMMENT '视频标题', * `summary` varchar(1026) DEFAULT NULL COMMENT '概述', * `cover_img` varchar(524) DEFAULT NULL COMMENT '封面图', * `price` int(11) DEFAULT NULL COMMENT '价格,分', * `create_time` datetime DEFAULT NULL COMMENT '创建时间', * `point` double(11,2) DEFAULT '8.70' COMMENT '....
准备数据 xdclass_online CREATE TABLE `chapter` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `video_id` int(11) DEFAULT NULL COMMENT '视频主键', `title` varchar(128) DEFAULT NULL COMMENT '章节名称', `ordered` int(11) DEFAULT NULL COMMENT '章节顺序', `create_time` datetime DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `chapter` (`id`, `video_id`, `title`, `ordered`, `create_time`) VALUES (370,40,'走进微信⼩小程序的世界',1,'2019-09-05 22:39:59'), (371,40,'开始第一个小程序之旅',2....