基于Vue.js+SpringBoot搭建的一个前后端分离的在线教育平台项目,分为前台系统和后台系统, B2C模式。
本项目是根据 b站视频教程 完成的一个分布式项目
- Vue.js
- Nuxt.js (服务端渲染技术,基于Vue.js的轻量级应用框架)
- vue-admin-template-master
- Element-UI
- webpack
- node.js
- ECharts
- 使用Es6的开发规范
- Mybatis-Plus
- SpringBoot(2.2.1.RELEASE)
- Spring Security
- SpringCloud(Hoxton.RELEASE)
- SpringCloudAlibaba(0.2.2.RELEASE)
- Spring-Cloud-Alibaba-Nacos(服务发现+配置中心+消息总线)
- OpenFeign(服务调用)
- Hystrix(熔断器)
- Spring-Cloud-Gateway(服务网关)
- EasyExcel
- OAuth2
模块名称 | 模块描述 | 端口号 |
---|---|---|
service-edu | 主要服务api接口(主要是讲师和课程管理) | 8001 |
service-oss | 阿里云对象存储OSS | 8002 |
service-vod | 阿里云点播视频VOD | 8003 |
service-cms | 首页幻灯片banner显示 | 8004 |
service-msm | 阿里云短信服务SMS | 8005 |
service-ucenter | 用户中心(用户登陆、注册、修改) | 8006 |
service-order | 订单支付 | 8007 |
service-statistics | 统计分析 | 8008 |
service-acl | 权限管理(教学,测试项目时不用启动)(鉴权,与common中spring_security模块连接) | 8009 |
canal-client | canal数据同步工具(教学,测试项目时不用启动) | 10000 |
api-gateway | 服务网关(教学,测试项目时不用启动) | 8222 |
中间件 | 端口号 |
---|---|
Nginx | 9001 |
Nacos | 8848 |
MySQL | 3306 |
Redis | 6379 |
- 准备工作:启动MySQL(运行docs/sql内sql文件)、Redis、Nginx(配置docs/config/nginx.conf文件)、Nacos
- 测试前台模块:启动模块guli-vue-front(端口3000)、service-edu、service-oss、service-vod、 service-cms、service-msm、service-ucenter、service-order
- 测试后台管理模块:guli-vue-admin(端口9528)、service-edu、service-statistics
下载 解压即可使用
# 启动Nginx
nginx.exe
# 停止Nginx
nginx.exe -s stop
# 重新加载
nginx.exe -s reload
- 下载nacos-server-2.0.1(开发此项目时最新版)
- 解压进入bin目录,修改startup.cmd文件中的
set MODE="standalone"
(新版本中默认为集群模式了) - cmd执行
startup.cmd
启动(也可以不进行第二步操纵,改用startup.cmd -m standalone
命令) - 访问
http://localhost:8848/nacos
, 默认用户名密码都是"nacos"
基于session复制
- 1.在项目的任意模块进行登录,登录之后,把数据存到2个地方
- 1.redis中(key:生成唯一随机值(ip、用户id等等);value:用户数据)
- 2.cookie(把redis中生成的key放到cookie中)
- 2.访问项目中的其他模块,请求时携带cookie
- 服务端获取到cookie值,到redis中根据key进行查询,如果查询到数据就直接登录
- 1.在项目的任意模块进行登录,登录之后,按照规则生成token值,并返回(可以通过cookie或者地址栏返回)
- 2.再去访问项目其他模块,每次访问都在地址栏带着token
- 3.服务端获取到token值,可以对token进行解析,如果可以取到用户信息就直接登录
注:token是什么?按照一定的规则生成字符串,字符串可以包含用户信息(自包含令牌),然后对这个字符串进行编码和加密。
一般采用通用的规则,如官方规则JWT,JWT就是官方给我们规定好了规则
由三部分组成:
- JWT头信息(header)
- 有效载荷(playload,可以包含用户信息)
- 签名哈希(signature,防伪)
signature=HMACSHA256(baser64UrlEncode(header)+"."+baser64UrlEncode(payload),'加盐secret')
JWT=baser64UrlEncode(header)+"."+baser64UrlEncode(payload)+"."+signature
- Spring Security 主要包含两个部分:用户认证(Authentication) 和 用户授权(Authorization)
- 用户认证(Authentication)
- 进入用户登录时候,输入用户名和密码,查询数据库,输入用户名和密码是否正确,如果正确的话,则认证成功
- 用户授权(Authorization)
- 登录了系统,登录用户可能是不同的角色,不同的角色有不同的操作功能
- 用户认证(Authentication)
- Spring Security 本质上就是过滤器Filter,对请求进行过滤
start at 2021-05-31
- day01:P1-P23
- day02:P24-P56
- day03:P57-P78
- day04:P79-P99
- day05:P100-P114
- day06:P115-P144(注意观影顺序P144与P143顺序反了)
- day07:P143-P168(注意观影顺序P148与P147顺序反了)
- day08:P169-P185
- day09:P186-P201
- day10:P202-P221
- day11:P222-P239
- day12:P240-P272
- day13:P273-295
- day14:P296-P307 end at 2021-06-19 完结撒花