1请说一下你项目中是如何进行项目管理和发布的
通过 Gogs 进行代码管理和版本控制,Jenkins 进行自动化构建和部署,以及 Docker 进行容器化部署。
1:可以通过 Gogs 的分支管理功能进行分支协作,确保代码合并的正确性。
2:Jenkins 是一个持续集成/持续部署工具,可以自动化构建、测试和部署流程。
3:Jenkins 与 Gogs 集成,自动检测 Gogs 仓库中的新提交,触发构建任务。
4:Jenkins 使用 Docker 构建镜像并运行容器,实现容器化部署。
2现在浏览器点击按钮出现了一个报错,如何定位发生问题的代码
打开浏览器的开发者工具,在大多数浏览器中,你可以通过按 F12 键或者右键点击页面然后选择“检查”来打开开发者工具。看出现bug的请求路径发到了哪里,根据请求路径,找到后端代码,打上段点Debug运行。
3你的项目中进行用户的登录和检验的详细流程是怎样的
- 前端输入:
- 用户在前端界面输入用户名(或账户)和密码。
- 后端接收与初步验证:
- 后端接收到前端发送的用户名和密码。
- 首先进行非空验证,检查用户名和密码是否都已填写。
- 如果任一字段为空,立即返回错误信息给前端,提示用户输入完整信息。
- 查询数据库:
- 后端使用接收到的用户名查询数据库,查找对应的用户记录。
- 如果数据库中没有找到匹配的用户名,返回错误信息给前端,提示“账户不存在”。
- 密码验证:
- 如果用户名存在,后端将取出数据库中该用户的加密密码。
- 同时,后端将前端传入的密码进行相同的加密处理(使用与数据库存储时相同的加密算法和盐值)。
- 加密后的密码与数据库中的加密密码进行比对。
- 如果密码不一致,返回错误信息给前端,提示“密码错误”。
- 生成Token:
- 如果用户名和密码都验证通过,后端将生成一个Token(通常是JWT,即JSON Web Token)。
- Token的有效载荷(Payload)中会包含一些用户信息,这些信息通常是唯一的且非敏感的,如用户ID、用户名等。
- Token还会包含一些标准声明,如签发者(Issuer)、接收者(Audience)、过期时间(Expiration Time)等。
- 返回数据:
- 后端将生成的Token以及可能的其他相关信息(如用户角色、权限等)返回给前端。
- 前端接收到这些信息后,通常会将Token存储在本地(如LocalStorage或Cookies中),以便后续的请求中使用。
- 前端处理:
- 前端根据后端返回的信息,更新用户界面,例如显示登录成功消息,跳转到用户主页等。
- 后续请求:
- 在Token有效期内,前端每次向后端发送请求时,都会携带这个Token作为身份验证的凭据。
- 后端会验证Token的有效性,并根据Token中的用户信息执行相应的操作。
整个流程确保了用户身份的合法性和数据的安全性。同时,通过使用Token,避免了在每次请求中都传输用户名和密码,提高了系统的安全性。
4说一下文章发布的流程
-
- 用户在前端页面输入标题、内容、标签、封面、发布时间等。
- 用户选择封面类型。
- 用户可以选择发布或保存为草稿。
-
接口判断:
- 首先判断是新增还是修改操作。
- 如果是新增,接口验证用户输入的数据,如标题、内容、标签等是否符合要求。
- 如果是修改,接口验证文章ID是否存在,并删除文章和素材图片的中间表格。
-
数据存储:
- 接口新建一个对象,填入用户输入的数据。
- 根据用户选择的封面类型,执行保存或修改方法。
- 将数据保存到自媒体图文信息的表格中。
-
图片与新闻中间表关系:
- 如果文章不是草稿,保存图片和新闻中间表关系。
-
微服务处理:
- 在文章微服务中,编写保存文章方法和保存文章内容方法。
- 暴露Feign接口供媒体微服务调用。
-
阿里云审核:
- 调用阿里云的文本审核和图片审核服务。
- 使用多线程异步方式进行调用,提高审核效率。
-
状态修改与发布:
- 如果文本和图片审核成功,修改状态改为审核成功。
- 如果文本或图片审核失败,修改状态为审核失败。
- 如果文本或者图片进入人工审核,状态改为待人工审核
- 人工审核通过,将状态修改为审核失败。
- 人工审核失败,将状态修改为审核失败。
- 审核通过后看是否到达发布时间
1.如果到发布时间,立即发布
2.审核通过后没有到达发布时间,计算出时间,使用Redisson做延迟任务。