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
...全文
493 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

142

社区成员

发帖
与我相关
我的任务
社区描述
2022年福大-软件工程;软件工程实践-W班
软件工程 高校
社区管理员
  • FZU_SE_teacherW
  • 丝雨_xrc
  • Lyu-
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧