diff --git a/README.md b/README.md
index dd4cc3f7..7c720b9a 100644
--- a/README.md
+++ b/README.md
@@ -9,7 +9,6 @@
-
[![star](https://gitee.com/veal98/Echo/badge/star.svg?theme=dark)](https://gitee.com/veal98/Echo/stargazers)
[![fork](https://gitee.com/veal98/Echo/badge/fork.svg?theme=dark)](https://gitee.com/veal98/Echo/members)
[![GitHub stars](https://img.shields.io/github/stars/Veal98/Echo?logo=github)](https://github.com/Veal98/Echo/stargazers)
@@ -50,6 +49,39 @@ Echo 是一套前后端不分离的开源社区系统,基于目前主流 Java
- Github Pages:[https://veal98.github.io/Echo](https://veal98.github.io/Echo)
- Gitee Pages:[https://veal98.gitee.io/echo](https://veal98.gitee.io/echo)
+## 📖 配套教程
+
+想要自己从零开始实现这个项目或者深入理解的小伙伴,可以扫描下方二维码关注公众号『**飞天小牛肉**』回复 `Echo` 获取配套教程,订阅话题 [Echo 学习教程](https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI0NDc3ODE5OQ==&action=getalbum&album_id=1744497649518493697&scene=173&from_msgid=2247485209&from_itemidx=3&count=3&uin=&key=&devicetype=Windows+10+x64&version=63010043&lang=zh_CN&ascene=1&session_us=gh_089c9f6e334b&fontgear=2) 第一时间获取更新。本套教程不仅会详细解释本项目涉及的各大技术点,还会汇总相关的常见面试题,目前尚在更新中。
+
+
+
+并推荐我的开源教程类项目 [『 CS-Wiki 』](https://gitee.com/veal98/CS-Wiki),Gitee 推荐项目,目前已累积 1.5k star: 致力打造完善的 Java 后端知识体系,不仅仅帮助各位小伙伴快速且系统的准备面试(秋招/社招),更指引学习的方向。
+
+### 序章
+
+- [必读:Echo 项目的 README](https://mp.weixin.qq.com/s/iiukwRNW1-my1q6UjYl4iw)
+- [Echo 项目结构分析](https://mp.weixin.qq.com/s/dZqSB0EN5-rmGQeG3Lx2jA)
+- [Echo 数据库表是如何设计的](https://mp.weixin.qq.com/s/DG549DzLy3NhXwpsOWaXYA)
+- [Echo 技术选型分析](https://mp.weixin.qq.com/s/tTBzyMklFtBfkyvuh8W0Nw)
+
+### 部署篇
+
+- [Echo 在 Windows 环境下的部署](https://mp.weixin.qq.com/s/ZgYGqLB5_rfCXNrW9jqgtQ)
+- [Echo 在 Linux 服务器上的部署](https://mp.weixin.qq.com/s/q9X5sJv7mtPaSApZB0PxPA)
+
+### 业务逻辑篇
+
+- [Echo 的注册功能是怎么做的](https://mp.weixin.qq.com/s/SC2FRPrVUbNw5ySHopOpHQ)
+- [Echo 的登录认证和授权是怎么做的](https://mp.weixin.qq.com/s/DjGvuNYu5Fjvw3Gjha4ulw)
+
+### 技术要点篇
+
+- 代更
+
+### 常见面试题
+
+- 待更
+
## 💻 核心技术栈
后端:
@@ -445,38 +477,6 @@ double score = Math.log10(Math.max(w, 1))
![](https://gitee.com/veal98/images/raw/master/img/20210208173636.png)
-## 📖 配套教程
-
-想要自己从零开始实现这个项目或者深入理解的小伙伴,可以扫描下方二维码关注公众号『**飞天小牛肉**』回复 `Echo` 获取配套教程,订阅话题 [Echo 学习教程](https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI0NDc3ODE5OQ==&action=getalbum&album_id=1744497649518493697&scene=173&from_msgid=2247485209&from_itemidx=3&count=3&uin=&key=&devicetype=Windows+10+x64&version=63010043&lang=zh_CN&ascene=1&session_us=gh_089c9f6e334b&fontgear=2) 第一时间获取更新。本套教程不仅会详细解释本项目涉及的各大技术点,还会汇总相关的常见面试题,目前尚在更新中。
-
-
-
-并推荐我的开源教程类项目 [『 CS-Wiki 』](https://gitee.com/veal98/CS-Wiki),Gitee 推荐项目,目前已累积 1.5k star: 致力打造完善的 Java 后端知识体系,不仅仅帮助各位小伙伴快速且系统的准备面试(秋招/社招),更指引学习的方向。
-
-### 序章
-
-- [必读:Echo 项目的 README](https://mp.weixin.qq.com/s/iiukwRNW1-my1q6UjYl4iw)
-- [Echo 项目结构分析](https://mp.weixin.qq.com/s/dZqSB0EN5-rmGQeG3Lx2jA)
-- [Echo 数据库表是如何设计的](https://mp.weixin.qq.com/s/DG549DzLy3NhXwpsOWaXYA)
-- [Echo 技术选型分析](https://mp.weixin.qq.com/s/tTBzyMklFtBfkyvuh8W0Nw)
-
-### 部署篇
-
-- [Echo 在 Windows 环境下的部署](https://mp.weixin.qq.com/s/ZgYGqLB5_rfCXNrW9jqgtQ)
-- [Echo 在 Linux 服务器上的部署](https://mp.weixin.qq.com/s/q9X5sJv7mtPaSApZB0PxPA)
-
-### 业务逻辑篇
-
-- [Echo 的注册功能是怎么做的](https://mp.weixin.qq.com/s/SC2FRPrVUbNw5ySHopOpHQ)
-
-### 技术要点篇
-
-- 代更
-
-### 常见面试题
-
-- 待更
-
## 📞 联系我
有什么问题也可以添加我的微信,记得备注来意:格式
(学校或公司 - 姓名或昵称 - 来意)
diff --git a/docs/README.md b/docs/README.md
index d5959295..a2a847b4 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -24,6 +24,39 @@ Echo 是一套前后端不分离的开源社区系统,基于目前主流 Java
- Github Pages:[https://veal98.github.io/Echo](https://veal98.github.io/Echo)
- Gitee Pages:[https://veal98.gitee.io/echo](https://veal98.gitee.io/echo)
+## 📖 配套教程
+
+想要自己从零开始实现这个项目或者深入理解的小伙伴,可以扫描下方二维码关注公众号『**飞天小牛肉**』回复 `Echo` 获取配套教程,订阅话题 [Echo 学习教程](https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI0NDc3ODE5OQ==&action=getalbum&album_id=1744497649518493697&scene=173&from_msgid=2247485209&from_itemidx=3&count=3&uin=&key=&devicetype=Windows+10+x64&version=63010043&lang=zh_CN&ascene=1&session_us=gh_089c9f6e334b&fontgear=2) 第一时间获取更新。本套教程不仅会详细解释本项目涉及的各大技术点,还会汇总相关的常见面试题,目前尚在更新中。
+
+
+
+并推荐我的开源教程类项目 [『 CS-Wiki 』](https://gitee.com/veal98/CS-Wiki),Gitee 推荐项目,目前已累积 1.5k star: 致力打造完善的 Java 后端知识体系,不仅仅帮助各位小伙伴快速且系统的准备面试(秋招/社招),更指引学习的方向。
+
+### 序章
+
+- [必读:Echo 项目的 README](https://mp.weixin.qq.com/s/iiukwRNW1-my1q6UjYl4iw)
+- [Echo 项目结构分析](https://mp.weixin.qq.com/s/dZqSB0EN5-rmGQeG3Lx2jA)
+- [Echo 数据库表是如何设计的](https://mp.weixin.qq.com/s/DG549DzLy3NhXwpsOWaXYA)
+- [Echo 技术选型分析](https://mp.weixin.qq.com/s/tTBzyMklFtBfkyvuh8W0Nw)
+
+### 部署篇
+
+- [Echo 在 Windows 环境下的部署](https://mp.weixin.qq.com/s/ZgYGqLB5_rfCXNrW9jqgtQ)
+- [Echo 在 Linux 服务器上的部署](https://mp.weixin.qq.com/s/q9X5sJv7mtPaSApZB0PxPA)
+
+### 业务逻辑篇
+
+- [Echo 的注册功能是怎么做的](https://mp.weixin.qq.com/s/SC2FRPrVUbNw5ySHopOpHQ)
+- [Echo 的登录认证和授权是怎么做的](https://mp.weixin.qq.com/s/DjGvuNYu5Fjvw3Gjha4ulw)
+
+### 技术要点篇
+
+- 代更
+
+### 常见面试题
+
+- 待更
+
## 💻 核心技术栈
后端:
@@ -419,38 +452,6 @@ double score = Math.log10(Math.max(w, 1))
![](https://gitee.com/veal98/images/raw/master/img/20210208173636.png)
-## 📖 配套教程
-
-想要自己从零开始实现这个项目或者深入理解的小伙伴,可以扫描下方二维码关注公众号『**飞天小牛肉**』回复 `Echo` 获取配套教程,订阅话题 [Echo 学习教程](https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI0NDc3ODE5OQ==&action=getalbum&album_id=1744497649518493697&scene=173&from_msgid=2247485209&from_itemidx=3&count=3&uin=&key=&devicetype=Windows+10+x64&version=63010043&lang=zh_CN&ascene=1&session_us=gh_089c9f6e334b&fontgear=2) 第一时间获取更新。本套教程不仅会详细解释本项目涉及的各大技术点,还会汇总相关的常见面试题,目前尚在更新中。
-
-
-
-并推荐我的开源教程类项目 [『 CS-Wiki 』](https://gitee.com/veal98/CS-Wiki),Gitee 推荐项目,目前已累积 1.5k star: 致力打造完善的 Java 后端知识体系,不仅仅帮助各位小伙伴快速且系统的准备面试(秋招/社招),更指引学习的方向。
-
-### 序章
-
-- [必读:Echo 项目的 README](https://mp.weixin.qq.com/s/iiukwRNW1-my1q6UjYl4iw)
-- [Echo 项目结构分析](https://mp.weixin.qq.com/s/dZqSB0EN5-rmGQeG3Lx2jA)
-- [Echo 数据库表是如何设计的](https://mp.weixin.qq.com/s/DG549DzLy3NhXwpsOWaXYA)
-- [Echo 技术选型分析](https://mp.weixin.qq.com/s/tTBzyMklFtBfkyvuh8W0Nw)
-
-### 部署篇
-
-- [Echo 在 Windows 环境下的部署](https://mp.weixin.qq.com/s/ZgYGqLB5_rfCXNrW9jqgtQ)
-- [Echo 在 Linux 服务器上的部署](https://mp.weixin.qq.com/s/q9X5sJv7mtPaSApZB0PxPA)
-
-### 业务逻辑篇
-
-- [Echo 的注册功能是怎么做的](https://mp.weixin.qq.com/s/SC2FRPrVUbNw5ySHopOpHQ)
-
-### 技术要点篇
-
-- 代更
-
-### 常见面试题
-
-- 待更
-
## 📞 联系我
有什么问题也可以添加我的微信,记得备注来意:格式
(学校或公司 - 姓名或昵称 - 来意)
diff --git a/src/main/java/com/greate/community/controller/LoginController.java b/src/main/java/com/greate/community/controller/LoginController.java
index 033400e3..75ca7982 100644
--- a/src/main/java/com/greate/community/controller/LoginController.java
+++ b/src/main/java/com/greate/community/controller/LoginController.java
@@ -163,7 +163,6 @@ public class LoginController implements CommunityConstant {
Model model, HttpServletResponse response,
@CookieValue("kaptchaOwner") String kaptchaOwner) {
// 检查验证码
- // String kaptcha = (String) session.getAttribute("kaptcha");
String kaptcha = null;
if (StringUtils.isNotBlank(kaptchaOwner)) {
String redisKey = RedisKeyUtil.getKaptchaKey(kaptchaOwner);
diff --git a/src/main/java/com/greate/community/entity/LoginTicket.java b/src/main/java/com/greate/community/entity/LoginTicket.java
index 804c8b97..f13c2713 100644
--- a/src/main/java/com/greate/community/entity/LoginTicket.java
+++ b/src/main/java/com/greate/community/entity/LoginTicket.java
@@ -6,9 +6,9 @@ public class LoginTicket {
private int id;
private int userId;
- private String ticket;
- private int status;
- private Date expired;
+ private String ticket; // 凭证
+ private int status; // 状态(是否有效)
+ private Date expired; // 过期时间
public int getId() {
return id;
diff --git a/src/main/java/com/greate/community/service/UserService.java b/src/main/java/com/greate/community/service/UserService.java
index 7ef0abbc..7f3b652c 100644
--- a/src/main/java/com/greate/community/service/UserService.java
+++ b/src/main/java/com/greate/community/service/UserService.java
@@ -203,7 +203,6 @@ public class UserService implements CommunityConstant {
loginTicket.setStatus(0); // 设置凭证状态为有效(当用户登出的时候,设置凭证状态为无效)
loginTicket.setExpired(new Date(System.currentTimeMillis() + expiredSeconds * 1000)); // 设置凭证到期时间
- // loginTicketMapper.insertLoginTicket(loginTicket);
// 将登录凭证存入 redis
String redisKey = RedisKeyUtil.getTicketKey(loginTicket.getTicket());
redisTemplate.opsForValue().set(redisKey, loginTicket);
@@ -260,6 +259,7 @@ public class UserService implements CommunityConstant {
User user = userMapper.selectById(userId);
// 重新加盐加密
newPassword = CommunityUtil.md5(newPassword + user.getSalt());
+ clearCache(userId);
return userMapper.updatePassword(userId, newPassword);
}