Spring Boot Security / 2048

Spring Boot —— 实现安全注册登录、2048小游戏。

1. 项目结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
src/main/java/
com/demo/management/
entity/
User.java
controller/
UserController.java // 控制器层
WelcomeController.java
GameController.java
service/
UserService.java // 服务层
repository/
UserRepository // 数据库控制
filter/
CacheControlFilter // 缓存控制
util/
PasswordUtil // 密码加密管理
CalcuApplication.java // 启动类
src/main/resources/
static/
login.html // 前端页面
register.html
welcome.html
2048.html

2. 实现内容

  • 注册登录,权限控制。

使用 Sa-Token 框架完成:框架介绍。尽管在自己的介绍中踩一捧一(还是捧自己)看上去很奇怪,奈不住他说的是真的。

当你受够 Shiro、SpringSecurity 等框架的三拜九叩之后,你就会明白,相对于这些传统老牌框架,Sa-Token 的 API 设计是多么的简单、优雅!

密码采用 SHA256 加密,用户所有信息 (id、姓名、密码(加密后)、2048最高分数)存储在 MySQL 数据库中(数据库利用 Spring Data JPA 控制)。

对页面访问控制做了两个方面:一是对需要登录才能访问的页面,加入了身份验证,如果未登录,将重定向到 /login 路径;二是启用了禁止页面缓存,以免出现登出后仍能依靠缓存访问内部页面的情况。

  • 2048 游戏实现。

Javascript 实现 2048 的游戏逻辑:格子生成、随机数字生成、滑动合并、判断游戏结束、分数计算和实时更新等等。

并在每局游戏结束后,通过后端调用更新用户分数信息。

3. 总结

对前后端的分工、交互方式更清晰了一些,这个项目主要依靠 前端通过 fetch 调用 API 来进行数据交互,用 post 向后端提交数据。

对 Spring Data JPA 的数据库调用更熟悉了,能够用 MySQL 实现数据的查询、修改,以实现所需的功能。

了解了一些 Javascript 语法,见识了 Javascript 在前端的强大逻辑功能。

当然这个项目也有些不足,比如 Service,Controller 分工不够明确,内部实现有一丢丢混乱了,下次应该先理清每一块的内部实现再开始。不过功能都实现的很不错了哈哈哈,就放在这里,做下个项目再注意吧。