142
社区成员




这个作业属于哪个课程 | 2022年福大-软件工程;软件工程实践-W班 |
---|---|
这个作业要求在哪里 | https://bbs.csdn.net/forums/se-se_practice软件工程实践第二次作业——个人实战 |
这个作业的目标 | 编写控制台程序统计冬奥数据、爬取数据、学习单元测试效能分析、git的fork和pull request操作等 |
其他参考文献 |
组别 | commit次数 |
---|---|
前台组 | 57 |
后台组 | 21 |
后端组 | 48 |
测试组 | 19 |
用户名 | commit次数 |
---|---|
黄欧成 | 14 |
沈启航 | 15 |
苏海元 | 25 |
伍泳乐 | 11 |
何震东 | 11 |
叶林忠 | 8 |
巫舒静 | 6 |
王彬 | 11 |
洪曙新 | 21 |
杨鸿 | 9 |
前台:Vue2.0+ Node.js
后台:Vue3.0+ ElementPlus Ts Node.js
后端:jdk1.8 SpringBoot Redis MySQL8.0、
抽奖的开奖思路:
根据开奖时间和抽奖项开始时间差,在redis中存入限时的key,当这个key的时间到期后,会触发redis的key过期事件,
在应用中监听key的过期事件,当过期后,获取到期的奖项id执行业务逻辑,包括随机抽取用户获奖以及用户获奖后收到邮件通知。
CSRF(跨站请求伪造)
问题:
- CSRF 用户A请求了正常的网站C,之后产生了cookie保存在客户端,之后用户A又浏览的恶意网站B,网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点C,恶意网站B产生恶意的请求去请求网站C,由于cookie是浏览器自动携带的结果C只能看到cookie是正确的,以为就是用户A的行为,从而产生损失。
目前防御CSRF有四种方案:
- 验证 HTTP Referer 字段
- 在请求地址中添加 token 并验证
- 在 HTTP 头中自定义属性并验证
- 验证码
服务器采用jwt鉴权方式,其内部实现用户通过账号密码登入,登入成功后服务器会颁发token给前端,前端存储token并且在每次请求手动把token加在http的请求头上,服务器对jwt解析获取相应信息进行鉴权,服务器没有采取传统的session-cookie机制进行鉴权,同时token为前端在每次请求手动的添加上就不存在跨站请求伪造的问题。
XSS攻击
问题:
- 跨站脚本攻击(Cross Site Script为了区别于CSS简称为XSS)指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。
解决方案:
- 服务器不会直接信任用户传输的数据,会设计一个Xss过滤器专门来过滤可能存在的XSS攻击。
SQL注入
问题:
- sql注入是指在sql语句预编译过程中混入了恶意sql代码导致sql错误执行,以不正当的手段多数据库信息进行操作。
解决方案:
- 后端会对要执行的sql语句进行预编译,保证预编译过程没有用户传来的参数,且执行的时候只需传参不会再次进行编译,不会导致恶意sql执行。
数据加密
问题:
- 对用户密码等数据采用SpringSecurity中BCryptPasswordEncoder类通过SHA-256+随机盐+密钥对密码进行加密。
解决方案:
- 特点:通过hash算法加密每次加密后的密文都不相同且不可逆,保证了用户密码不能被解密,且通过匹配算法匹配未加密密码与加密后密码是否相同。
权限设计与鉴权说明
- 认证策略:服务器采用SpringSecurity框架+jwt令牌以及使用redis认证方式,Jwt通过签名加密的方式保证不被其他人仿造颁发jwt。
- 鉴权:采用SpringSecurity框架对每一个接口限制权限,只有具有相应权限的用户才能调用相应的接口且通过jwt存储的用户信息对私人内容进行鉴权;同时jwt是无状态的,因此通过redis维护黑名单使jwt主动失效。
- 权限设计:项目分三种角色 用户,管理员,超级管理员,每个角色有相应的权限,具有相应的权限才能访问相应的方法
- 用户可通过前台App操作相应的笔友模块,信箱模块,时空胶囊模块和主页模块。
- 管理员可通过后台Web对用户账号管理,平台数据分析,以及反馈举报处理,以及应用管理。
- 超级管理员:超级管理员在管理员的基础可以对管理员账号进行管理
开奖界面
登陆注册:实现了简单的登录和注册;其中包含了短信验证码
奖品详情页
奖品详情页主要分为两个状态:已开奖/未开奖
已开奖:通过轮盘展示中奖情况、通过两个列表展示已中奖名单+未中奖名单
未开奖:展示开奖时间和参与人数
实现了发布抽奖的功能;其中实现了抽奖信息奖品信息、中签人数限制、最大参与人数限制、参与抽奖开始时间、参与抽奖截止时间、手动开奖或自动开奖)、设置奖项时可以动态设置奖项个数、信息、奖项等级、奖品
学号姓名 组员职责分工 贡献比例 221900217 黄欧成 后端框架的搭建,登陆注册的实现,发布抽奖,修改抽奖信息 15 221900122 苏海元 抽奖详情页,接口文档 10 221900203 伍泳乐 发布抽奖页,登陆页 10 221900214 何震东 数据库表的建立,发布抽奖,修改抽奖信息,抽奖信息的查询 8 221900227 叶林忠 博客撰写 编写测试 8 221900238 巫舒静 后台我的页面,抽奖详情 9 221900336 洪曙新 前台框架搭建
前台用户界面
前台“所有抽奖”界面9 221900422 王彬 接口测试
博客撰写9 221900420 沈启航 数据库表的建立,抽奖列表查询 13 221900428 杨鸿 后台接口文档,后台登入,后台页面展示 9
221900217 黄欧成:
团队开发时间少,难以分工
221900122 苏海元:
开始写代码前没有做好完整的规约,大家写的东西风格各异。
在编写前理清了总体的思路就开始编写代码,对接时有些困难。
一天的时间有点短= =。
221900203 伍泳乐:
代码风格不同,导致写起来会觉得很有难度。
对于同学的封装,有时不会用,会导致编写困难。
进行对接时有点困难,主要时间太少了。
在进行代码合并时会导致冲突,冲突解决花费时间。
221900214 何震东:
遇到的问题 git合并代码冲突, 先拉再提交
写代码发现数据库缺少字段 ,在数据库中添加字段, 修改实体类
221900227 叶林忠:
困难:对技术不熟悉
解决方法:上网看教程
221900238 巫舒静:
前端小组分配工作后发现所用技术为Vue3,之前用的都是Vue2,版本差别较大,上手比较吃力。通过视频快速学习,但是对于框架里Vue3和Vue2不同的地方还是较多,所以还是以直接搜问题为主,此外小组中有学过Vue3的也给予了较多帮助.
221900336 洪曙新:
第一次十个人一起合作写项目,对于git操作更加熟练了。由于时间有限,开发之前没有和后端协商好参数,调接口的时候有点分歧。
221900422 王彬:
对测试的流程和写法更加的熟练,不仅对程序质量有一定的提升,对自己未来的编程也起到了很大的帮助。
221900420 沈启航:
自动开奖一开始没有思路,后来想到redis有过期监听的接口,所以采用了这个解决方案来实现自动开奖。
同时手动开奖复用了开奖的服务接口,简化了代码量。
221900428 杨鸿:
221900217 黄欧成:
PSP | 预估消耗时间(分钟) | 实际消耗时间(分钟) |
---|---|---|
•需求理解与分析 | 30 | 20 |
•技术学习 | 10 | 20 |
•分工讨论 | 20 | 30 |
•制定代码规范 | 20 | 20 |
•编程 | 400 | 440 |
•代码复审 | ||
•部署云服务 | 30 | 40 |
•撰写博客 | ||
•计算工作量 | 10 | 5 |
•事后总结 | 50 | 20 |
总计 | 570 | 595 |
221900122 苏海元:
PSP | 预估消耗时间(分钟) | 实际消耗时间(分钟) |
---|---|---|
•需求理解与分析 | 40 | 20 |
•技术学习 | 20 | 20 |
•分工讨论 | 20 | 10 |
•制定代码规范 | 20 | 20 |
•编程 | 300 | 340 |
•代码复审 | 30 | 20 |
•部署云服务 | ||
•撰写博客 | ||
•计算工作量 | 10 | 10 |
•事后总结 | 30 | 20 |
总计 | 470 | 460 |
221900203 伍泳乐:
PSP | 预估消耗时间(分钟) | 实际消耗时间(分钟) |
---|---|---|
•需求理解与分析 | 30 | 20 |
•技术学习 | 40 | 30 |
•分工讨论 | 20 | 10 |
•制定代码规范 | 30 | 20 |
•编程 | 240 | 230 |
•代码复审 | 30 | 20 |
•部署云服务 | ||
•撰写博客 | ||
•计算工作量 | 20 | 30 |
•事后总结 | 30 | 20 |
总计 | 430 | 360 |
221900214 何震东:
PSP | 预估消耗时间(分钟) | 实际消耗时间(分钟) |
---|---|---|
•需求理解与分析 | 40 | 30 |
•技术学习 | 60 | 50 |
•分工讨论 | 20 | 10 |
•制定代码规范 | 30 | 30 |
•编程 | 300 | 310 |
•代码复审 | 40 | 25 |
•部署云服务 | ||
•撰写博客 | ||
•计算工作量 | 35 | 25 |
•事后总结 | 30 | 30 |
总计 | 555 | 510 |
221900227 叶林忠:
PSP | 预估消耗时间(分钟) | 实际消耗时间(分钟) |
---|---|---|
•需求理解与分析 | 40 | 20 |
•技术学习 | 40 | 30 |
•分工讨论 | 20 | 10 |
•制定代码规范 | 20 | 15 |
•编程 | 200 | 210 |
•代码复审 | 40 | 15 |
•部署云服务 | ||
•撰写博客 | 50 | 40 |
•计算工作量 | 20 | 10 |
•事后总结 | 30 | 20 |
总计 | 460 | 370 |
221900238 巫舒静:
PSP | 预估消耗时间(分钟) | 实际消耗时间(分钟) |
---|---|---|
•需求理解与分析 | 50 | 30 |
•技术学习 | 30 | 20 |
•分工讨论 | 20 | 10 |
•制定代码规范 | 20 | 15 |
•编程 | 250 | 240 |
•代码复审 | 30 | 20 |
•部署云服务 | ||
•撰写博客 | ||
•计算工作量 | 20 | 20 |
•事后总结 | 30 | 20 |
总计 | 450 | 375 |
221900336 洪曙新:
PSP | 预估消耗时间(分钟) | 实际消耗时间(分钟) |
---|---|---|
•需求理解与分析 | 20 | 20 |
•技术学习 | 60 | 50 |
•分工讨论 | 30 | 15 |
•制定代码规范 | 40 | 20 |
•编程 | 240 | 180 |
•代码复审 | 30 | 20 |
•部署云服务 | ||
•撰写博客 | ||
•计算工作量 | 20 | 15 |
•事后总结 | 20 | 20 |
总计 | 460 | 340 |
221900422 王彬:
PSP | 预估消耗时间(分钟) | 实际消耗时间(分钟) |
---|---|---|
•需求理解与分析 | 25 | 15 |
•技术学习 | 40 | 20 |
•分工讨论 | 30 | 20 |
•制定代码规范 | 40 | 30 |
•编程 | 180 | 120 |
•代码复审 | 30 | 20 |
•部署云服务 | ||
•撰写博客 | 30 | 20 |
•计算工作量 | 20 | 15 |
•事后总结 | 40 | 30 |
总计 | 395 | 290 |
221900420 沈启航:
PSP | 预估消耗时间(分钟) | 实际消耗时间(分钟) |
---|---|---|
•需求理解与分析 | 20 | 20 |
•技术学习 | 50 | 30 |
•分工讨论 | 40 | 30 |
•制定代码规范 | 40 | 30 |
•编程 | 360 | 350 |
•代码复审 | 30 | 20 |
•部署云服务 | 30 | 50 |
•撰写博客 | ||
•计算工作量 | 20 | 15 |
•事后总结 | 40 | 25 |
总计 | 630 | 570 |
221900428 杨鸿:
PSP | 预估消耗时间(分钟) | 实际消耗时间(分钟) |
---|---|---|
•需求理解与分析 | 40 | 35 |
•技术学习 | 30 | 30 |
•分工讨论 | 20 | 20 |
•制定代码规范 | 30 | 30 |
•编程 | 200 | 210 |
•代码复审 | 30 | 20 |
•部署云服务 | ||
•撰写博客 | ||
•计算工作量 | 20 | 20 |
•事后总结 | 20 | 20 |
总计 | 390 | 385 |