Mobius——git编程实战

Mobius__ 团队 2022-04-23 23:51:20

作业基本信息

这个作业属于哪个课程2022年福大-软件工程;软件工程实践-W班
这个作业要求在哪里https://bbs.csdn.net/forums/se-se_practice软件工程实践第二次作业——个人实战
这个作业的目标编写控制台程序统计冬奥数据、爬取数据、学习单元测试效能分析、git的fork和pull request操作等
其他参考文献

目录

目录

  • 作业基本信息
  • 目录
  • 1、Gitcode项目地址
  • 2、Gitcode 的提交日志截图(鼓励小粒度提交),统计各组的commit次数
  • 3、程序运行环境
  • 4、功能实现思路描述
  • 5、程序截图说明
  • 5.1 重要代码截图
  • 5.2 程序截图
  • 6. 组员职责分工及评估每位组员的贡献比例
  • 7. 合作中遇到的困难及解决方法
  • 8. PSP表格

1、Gitcode项目地址

    莫比乌斯团队项目

前台地址

后台地址

2、Gitcode 的提交日志截图(鼓励小粒度提交),统计各组的commit次数

组别commit次数
前台组57
后台组21
后端组48
测试组19
用户名commit次数
黄欧成14
沈启航15
苏海元25
伍泳乐11
何震东11
叶林忠8
巫舒静6
王彬11
洪曙新21
杨鸿9

3、程序运行环境

前台:Vue2.0+ Node.js
后台:Vue3.0+ ElementPlus Ts Node.js
后端:jdk1.8 SpringBoot Redis MySQL8.0、

4、功能实现思路描述

  • 抽奖的开奖思路:
    根据开奖时间和抽奖项开始时间差,在redis中存入限时的key,当这个key的时间到期后,会触发redis的key过期事件,

    在应用中监听key的过期事件,当过期后,获取到期的奖项id执行业务逻辑,包括随机抽取用户获奖以及用户获奖后收到邮件通知。
    

    img

  • 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对用户账号管理,平台数据分析,以及反馈举报处理,以及应用管理。
    - 超级管理员:超级管理员在管理员的基础可以对管理员账号进行管理

5、程序截图说明

5.1 重要代码截图

  • 开奖界面

    img

5.2 程序截图

  • 登陆注册:实现了简单的登录和注册;其中包含了短信验证码

    img

  • 奖品详情页
    奖品详情页主要分为两个状态:已开奖/未开奖
    已开奖:通过轮盘展示中奖情况、通过两个列表展示已中奖名单+未中奖名单
    未开奖:展示开奖时间和参与人数

    img

    img

  • 实现了发布抽奖的功能;其中实现了抽奖信息奖品信息、中签人数限制、最大参与人数限制、参与抽奖开始时间、参与抽奖截止时间、手动开奖或自动开奖)、设置奖项时可以动态设置奖项个数、信息、奖项等级、奖品

img

image-20220423234923213

6. 组员职责分工及评估每位组员的贡献比例

学号姓名组员职责分工贡献比例
221900217 黄欧成后端框架的搭建,登陆注册的实现,发布抽奖,修改抽奖信息15
221900122 苏海元抽奖详情页,接口文档10
221900203 伍泳乐发布抽奖页,登陆页10
221900214 何震东数据库表的建立,发布抽奖,修改抽奖信息,抽奖信息的查询8
221900227 叶林忠博客撰写 编写测试8
221900238 巫舒静后台我的页面,抽奖详情9
221900336 洪曙新前台框架搭建
前台用户界面
前台“所有抽奖”界面
9
221900422 王彬接口测试
博客撰写
9
221900420 沈启航数据库表的建立,抽奖列表查询13
221900428 杨鸿后台接口文档,后台登入,后台页面展示9

7. 合作中遇到的困难及解决方法

221900217 黄欧成:
团队开发时间少,难以分工

221900122 苏海元:

开始写代码前没有做好完整的规约,大家写的东西风格各异。
在编写前理清了总体的思路就开始编写代码,对接时有些困难。
一天的时间有点短= =。

221900203 伍泳乐:

代码风格不同,导致写起来会觉得很有难度。
对于同学的封装,有时不会用,会导致编写困难。
进行对接时有点困难,主要时间太少了。
在进行代码合并时会导致冲突,冲突解决花费时间。

221900214 何震东:

遇到的问题 git合并代码冲突, 先拉再提交
写代码发现数据库缺少字段 ,在数据库中添加字段, 修改实体类

221900227 叶林忠:

困难:对技术不熟悉
解决方法:上网看教程

221900238 巫舒静:

前端小组分配工作后发现所用技术为Vue3,之前用的都是Vue2,版本差别较大,上手比较吃力。通过视频快速学习,但是对于框架里Vue3和Vue2不同的地方还是较多,所以还是以直接搜问题为主,此外小组中有学过Vue3的也给予了较多帮助.

221900336 洪曙新:

​ 第一次十个人一起合作写项目,对于git操作更加熟练了。由于时间有限,开发之前没有和后端协商好参数,调接口的时候有点分歧。

221900422 王彬:

​ 对测试的流程和写法更加的熟练,不仅对程序质量有一定的提升,对自己未来的编程也起到了很大的帮助。

221900420 沈启航:

自动开奖一开始没有思路,后来想到redis有过期监听的接口,所以采用了这个解决方案来实现自动开奖。

同时手动开奖复用了开奖的服务接口,简化了代码量。

221900428 杨鸿:

8. PSP表格

221900217 黄欧成:

PSP预估消耗时间(分钟)实际消耗时间(分钟)
•需求理解与分析3020
•技术学习1020
•分工讨论2030
•制定代码规范2020
•编程400440
•代码复审
•部署云服务3040
•撰写博客
•计算工作量105
•事后总结5020
总计570595

221900122 苏海元:

PSP预估消耗时间(分钟)实际消耗时间(分钟)
•需求理解与分析4020
•技术学习2020
•分工讨论2010
•制定代码规范2020
•编程300340
•代码复审3020
•部署云服务
•撰写博客
•计算工作量1010
•事后总结3020
总计470460

221900203 伍泳乐:

PSP预估消耗时间(分钟)实际消耗时间(分钟)
•需求理解与分析3020
•技术学习4030
•分工讨论2010
•制定代码规范3020
•编程240230
•代码复审3020
•部署云服务
•撰写博客
•计算工作量2030
•事后总结3020
总计430360

221900214 何震东:

PSP预估消耗时间(分钟)实际消耗时间(分钟)
•需求理解与分析4030
•技术学习6050
•分工讨论2010
•制定代码规范3030
•编程300310
•代码复审4025
•部署云服务
•撰写博客
•计算工作量3525
•事后总结3030
总计555510

221900227 叶林忠:

PSP预估消耗时间(分钟)实际消耗时间(分钟)
•需求理解与分析4020
•技术学习4030
•分工讨论2010
•制定代码规范2015
•编程200210
•代码复审4015
•部署云服务
•撰写博客5040
•计算工作量2010
•事后总结3020
总计460370

221900238 巫舒静:

PSP预估消耗时间(分钟)实际消耗时间(分钟)
•需求理解与分析5030
•技术学习3020
•分工讨论2010
•制定代码规范2015
•编程250240
•代码复审3020
•部署云服务
•撰写博客
•计算工作量2020
•事后总结3020
总计450375

221900336 洪曙新:

PSP预估消耗时间(分钟)实际消耗时间(分钟)
•需求理解与分析2020
•技术学习6050
•分工讨论3015
•制定代码规范4020
•编程240180
•代码复审3020
•部署云服务
•撰写博客
•计算工作量2015
•事后总结2020
总计460340

221900422 王彬:

PSP预估消耗时间(分钟)实际消耗时间(分钟)
•需求理解与分析2515
•技术学习4020
•分工讨论3020
•制定代码规范4030
•编程180120
•代码复审3020
•部署云服务
•撰写博客3020
•计算工作量2015
•事后总结4030
总计395290

221900420 沈启航:

PSP预估消耗时间(分钟)实际消耗时间(分钟)
•需求理解与分析2020
•技术学习5030
•分工讨论4030
•制定代码规范4030
•编程360350
•代码复审3020
•部署云服务3050
•撰写博客
•计算工作量2015
•事后总结4025
总计630570

221900428 杨鸿:

PSP预估消耗时间(分钟)实际消耗时间(分钟)
•需求理解与分析4035
•技术学习3030
•分工讨论2020
•制定代码规范3030
•编程200210
•代码复审3020
•部署云服务
•撰写博客
•计算工作量2020
•事后总结2020
总计390385
...全文
138 回复 打赏 收藏 举报
写回复
回复
切换为时间正序
请发表友善的回复…
发表回复
发帖
2022年福大-软件工程、实践-W班

136

社区成员

2022年福大-软件工程;软件工程实践-W班
软件工程 高校
社区管理员
  • FZU_SE_teacherW
  • 丝雨_xrc
  • Lyu-
加入社区
帖子事件
编辑了帖子 (查看)
2022-04-24 00:02
编辑了帖子 (查看)
2022-04-24 00:01
编辑了帖子 (查看)
2022-04-24 00:00
编辑了帖子 (查看)
2022-04-23 23:59
创建了帖子
2022-04-23 23:51
社区公告
暂无公告