用户中心项目总结

第一个学习到的东西是企业做项目流程

我觉得最重要的是两个点

1:做功能之前,你要思考好这个功能究竟要做什么,采用什么技术去做这个功能,实现代码的步骤,罗列清楚,既方便写代码,又方便去理解。

2:一定要在本地测试好!测试好!再测试好!再把代码打包给云服务器

企业做项目流程

需求分析 => 设计(概要设计、详细设计)=> 技术选型 => 初始化 / 引入需要的技术 => 写 Demo => 写代码(实现业务逻辑) => 测试(单元测试、系统测试)=> 代码提交 / 代码评审 => 部署 => 发布上线

重新知道了一些技术是什么用的

spring(依赖注入)

springmvc(web框架,提供接口访问、restful接口等能力)

springboot(快速启动/快速集成项目,整合框架,管理配置,yml文件)

知道了怎么使用MyBatisX插件,根据数据库生成

​ 要注意:mybatis-plus有自动驼峰命名配置,记得关掉,还有配置全局逻辑删除字段,yml配置完,还要在实体类加上@TableLogic,虽然会参与sql查询,但是会过滤掉逻辑删除的。然后删除不是真删掉数据,而是把数据的isDelete(逻辑删除字段) 改成1 (mybatis-plus中逻辑已删除值)

text
复制代码
mybatis-plus: configuration: map-underscore-to-camel-case: false # 关闭驼峰命名,不过直接@TableField(value = "isDelete")这个注解,可以不用管这个 开启的话domain的字段例子:userAccount 会变成 user_account log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl global-config: db-config: # 逻辑删除字段会参与查询,但是会被过滤掉 logic-delete-field: isDelete # 全局逻辑删除字段名 logic-delete-value: 1 # 逻辑已删除值 logic-not-delete-value: 0 # 逻辑未删除值

写业务逻辑的参考

注册逻辑设计

接受参数:用户账号,密码,验证密码

请求类型: POST (基本上只有查询就用GET,其它都用POST就可)

请求体:JSON格式的数据

返回值:true或异常

  1. 用户在前端输入账户和密码、以及校验码(todo)
  2. 校验用户的账户、密码、校验密码,是否符合要求
    1. 传入字段非空(账户、密码、校验密码)
    2. 账户长度 不小于 4 位
    3. 密码和确认密码就 不小于 8 位吧
    4. 账户不包含特殊字符
    5. 密码和校验密码相同
    6. 密码强校验,密码由四种元素组成(数字、大写字母、小写字母、特殊字符),且必须包含全部四种元素;密码长度大于等于8个字符。
    7. 账户不能重复
  3. 对密码进行加盐加密(密码千万不要直接以明文存储到数据库中)
  4. 向数据库插入用户数据

多环境

​ 后端多环境类似application-dev.yml ,在通用的application.yml中配置共用的,不共用的,比如数据库,jwt之类的信息,在多环境中额外配置。

建议建议最好在 application.yml中

text
复制代码
spring: datasource: url: jdbc:mysql://${hm.db.host}:3306/hmall?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai driver-class-name: com.mysql.cj.jdbc.Driver username: ${hm.db.username} password: ${hm.db.pw}

类似这样,

然后在具体的环境中

text
复制代码
hm: db: host: 192.168.88.129

不过在后面的微服务网关中,先通过 bootstrap.yaml 中配置的Nacos信息去获取Nacos的通用配置,然后再加载 application.yml 中的具体应用配置。

后端启动多环境 java -jar .\user-center-backend-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod

项目部署上线

其实就是把项目放到一个配置很好的电脑上面,然后要求它24小时不关机供人访问

而要把项目放到另一台电脑上,需要一些软件配置。

比如说运行Java程序,需要JDK,项目有用到数据库,那就要在另一台电脑上把东西都配置好

只看了原始部署和宝塔部署,docker部署大概了解一些

关于宝塔

感触最深的应该是放行的端口了,有时候在宝塔这里

1.png

放行了,还要在阿里云服务器安全组也放行才能用

3.png

宝塔连接mysql

宝塔内mysql先创建数据库

5.png

然后指定允许可以连的IP(自己的公网IP,去百度查)

6.png

域名部分

前端项目访问流程:用户输入网址 => 域名解析服务器(把网址解析为 ip 地址 / 交给其他的域名解析服务)=> 服务器 =>(防火墙)=> nginx 接收请求,找到对应的文件,返回文件给前端 => 前端加载文件到浏览器中(js、css) => 渲染页面

后端项目访问流程:用户输入网址 => 域名解析服务器 => 服务器 => nginx 接收请求 => 后端项目(比如 8080端口)

域名解析服务器(把网址解析为 ip 地址 / 交给其他的域名解析服务) 这个地方设置要解析的规则,它会自动转换成对应的IP或者其它域名服务再解析

2.png

然后在线上可能产生跨域问题:浏览器为了用户的安全,仅允许向 同域名、同端口 的服务器发送请求。

我是因为前端访问是http://47.121.196.172/,默认80端口,

前端项目在生产环境下访问后端的地址http://47.121.196.172,也是默认80端口,只需要在nginx做反向代理,代理到8080端口就可以

做的扩展点

1:AOP实现统一判断管理员权限,全局请求拦截器统一记录请求日志

2:项目登录使用redis实现分布式session,单点登录,设置了set-cookie domain 让域名更通用

3:使用Redis实现限制用户登陆次数

7.png
0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
鱼友5617
下载 APP