【黑马头条训练营】day01-黑马头条整体构成与App登录

目录

描述app端从登录请求到首页显示的全部流程

描述用户微服务的组成及登录业务及实现逻辑

自己编写用户微服务登录关键逻辑

描述app端从登录请求到首页显示的全部流程

从浏览器发起请求访问app前端 通过nginx请求到我们app前端 在app端我们输入手机号及密码登录 发起请求到nginx nginx做一个反向代理到我们的app网关 在

app网关使用了全局过滤器做鉴权 判断token是否携带或token是否有效 以及如果是登录的话 那么就进行放行 网关会根据路由规则 请求到用户微服务 在用户微服

务中 如果是正常登录 对手机号和密码进行校验 将用户的信息存入token并返回 如果是游客登录 token = 0 返回

描述用户微服务的组成及登录业务及实现逻辑

用户微服务的组成:包含哪些类,每个类具体是做什么的?

LoginDto:接收用户的手机号和密码ApUser:用户信息表 通过手机号查询用户 判断用户是否存在

登录业务:app端如何登录,需要填写什么数据,后端登录时需要做哪些事情,需要验证什么?

1.填写用户的手机号和密码 发起请求 请求到nginx nginx反向代理到app网关 app网关做鉴权 然后根据路由规则 请求到用户微服务

2.对手机号和密码进行非空校验 只有手机号和密码不为空就为正常登录 否则就是游客登录

3.通过手机号查询用户 如果用户不存在 返回用户不存在

4.校验密码 将当前密码加盐之后加密 对比用户的密码 如果密码不一样 返回密码错误

5.将用户id加密成token 将盐和密码清空 将用户和token返回

6.如果是游客模式 直接返回token=0

实现逻辑:请求经过了哪个类的哪个方法,这个方法都做了哪些事情。

AuthorizeFilter类filter方法:鉴权 判断是否登录 是否携带token或token是否有效ApUserLoginController类login方法:控制层 接收用户的手机号和密码 调用业务层进行处理ApUserServiceImpl类loginf方法:业务层 校验用户的手机号和密码

自己编写用户微服务登录关键逻辑

@Override
public ResponseResult login(LoginDto dto) {//1.校验用户手机号和密码 不为空就是正常登录 否则就是游客登录if(!StringUtils.isBlank(dto.getPhone()) && !StringUtils.isBlank(dto.getPassword())){ApUser apUser = getOne(Wrappers.<ApUser>lambdaQuery().eq(ApUser::getPhone, dto.getPhone()));//1.1判断用户是否存在if(apUser == null){return ResponseResult.errorResult(AppHttpCodeEnum.DATA_EXIST,"用户不存在");}//1.2校验密码String salt = apUser.getSalt();String password = dto.getPassword();password = DigestUtils.md5DigestAsHex((password+salt).getBytes());if(!password.equals(apUser.getPassword())){return ResponseResult.errorResult(AppHttpCodeEnum.LOGIN_PASSWORD_ERROR);}//1.3返回数据Map<String,Object> map = new HashMap<>();map.put("token",AppJwtUtil.getToken(apUser.getId().longValue()));apUser.setSalt("");apUser.setPassword("");map.put("user",apUser);return ResponseResult.okResult(map);}else{//2.游客登录Map<String,Object> map = new HashMap<>();map.put("token",AppJwtUtil.getToken(0l));return ResponseResult.okResult(map);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/890966.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文大白话讲清楚javascript浮点数精度丢失和解决策略

文章目录 一文大白话讲清楚javascript浮点数精度丢失和解决策略1.问题的来源北京2. 浮点数的存储二进制存储3.精度丢失解决方案 一文大白话讲清楚javascript浮点数精度丢失和解决策略 1.问题的来源北京 我们先看一个经典javascript问题&#xff0c;关于等值判断 let num0.10…

C语言-数据结构-图

目录 一,图的概念 1,图的定义 2,图的基本术语 二,图的存储结构 1,邻接矩阵 2,邻接表 三,图的遍历 1,深度优先搜索 2,广度优先搜素 四,生成树和最小生成树 1,生成树的特点: 2,最小生成树 (1)普利姆算法Prim (2)普里姆算法思路 五,最短路径 1,Dijkstra算法 2,Fl…

C语言-数据结构-查找

目录 一,查找的概念 二,线性查找 1,顺序查找 2,折半查找 3,分块查找 三,树表的查找 1,二叉排序树 (1)查找方式: (2)、二叉排序树的插入和生成 (3)、二叉排序树的删除 2,平衡二叉树 (1)、什么是平衡二叉树 (2)、平衡二叉树的插入调整 &#xff08;1&#xff09;L…

【微信小程序】4plus|搜索框-历史搜索 | 我的咖啡店-综合实训

升级版1-清空全部的再次确认 实现功能: 历史搜索记录展示-历史搜索记录展示10条点击跳转-点击历史搜索记录可同步到搜索框并自动搜索全部删除-可一次性全部删除历史搜索记录全部删除-有再次确认操作展示 进行搜索后留下搜索记录 点击垃圾桶图标,显示【清空全部】 点击【清…

线程池基础知识

线程池&#xff1a; 顾名思义就是管理一系列线程的资源池。当有任务要处理时&#xff0c;直接从线程池中获取线程来处理&#xff0c;处理完之后线程并不会立即被销毁&#xff0c;而是等待下一个任务。 使用线程池的好处 降低资源消耗&#xff1a;通过重复利用已创建的线程降…

ARM 架构--通用寄存器状态寄存器控制寄存器特殊用途寄存器

目录 一?ARM 架构中的寄存器 ARM 架构中的寄存器 通用寄存器 状态寄存器 控制寄存器 特殊用途寄存器 总结 二 通用寄存器 ARM 架构中的通用寄存器 ARMv7 架构 ARMv8 架构 实例 ARMv7 架构 ARMv8 架构 三 状态寄存器 ARM 架构中的状态寄存器 状态寄存器 详细…

macrodroid通过http请求控制手机运行宏

macrodroid adb命令 adb shell pm grant com.arlosoft.macrodroid android.permission.WRITE_SECURE_SETTINGS例:http请求手机播放指定MP3文件 声音素材_电量过低提醒 新建一个宏 添加触发器-连接-http服务器请求 路径随意填,最好不要有特殊符号,不然浏览器识别链接会出错,…

【CSS in Depth 2 精译_098】17.3:CSS 动画延迟技术与填充模式设置 + 17.4:通过 CSS 动画传递意图的秘诀

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第五部分 添加动效 ✔️【第 17 章 动画】 ✔️ 17.1 关键帧17.2 3D 变换下的动画设置 17.2.1 添加动画前页面布局的构建17.2.2 为布局添加动画 17.3 动画延迟与填充模式 ✔️17.4 通过动画传递意图…

慧集通客户案例:致远OA与熵基考勤机集成方案

本原型公司是一家专注大健康产业的综合性高新科技形实体企业&#xff0c;按照单位的战略业务布局&#xff0c;围绕“做强做优、世界一流”的目标&#xff0c;加快内外部资源整合、加强业务协同、优化资源配置&#xff0c;有序推进大健康及相关产业的有机融合&#xff0c;加快构…

深度学习笔记(6)——循环神经网络RNN

循环神经网络 RNN 核心思想:RNN内部有一个“内部状态”,随着序列处理而更新 h t f W ( h t − 1 , x t ) h_tf_W(h_{t-1},x_t) ht​fW​(ht−1​,xt​) h t h_t ht​是new state, h t − 1 h_{t-1} ht−1​是old state, x t x_t xt​是当前时间步的输入,所有时间步共享 f W…

电脑卡顿救星,Mem Reduct 智能清理 10%以上内存

作为一款专业的内存优化工具&#xff0c;Mem Reduct凭借其强大的功能和极致的性能表现&#xff0c;成为众多用户管理系统内存的首选软件。它采用先进的内存管理算法&#xff0c;通过调用系统底层API接口&#xff0c;能够智能识别并清理各类内存占用&#xff0c;包括但不限于系统…

kibana启动报错:Invalid character in header content [“kbn-name“]

启动时候kibana报错&#xff1a; 打开 kibana配置文件&#xff0c;config/kibana.yml&#xff0c;配置上server.name即可&#xff0c;如下&#xff1a;

短视频矩阵系统后端源码搭建实战与技术详解,支持OEM

一、引言 随着短视频行业的蓬勃发展&#xff0c;短视频矩阵系统成为了众多企业和创作者进行多平台内容运营的有力工具。后端作为整个系统的核心支撑&#xff0c;负责处理复杂的业务逻辑、数据存储与交互&#xff0c;其搭建的质量直接影响着系统的性能、稳定性和可扩展性。本文将…

sql group by 多个字段例子

有表如下&#xff1b; 获取某年份、某地区、某产品的销售总额&#xff0c; 或者根据需要把字段顺序换一下&#xff1b; insert into sales (product, year, region, amount) values (飞机,2000,东部,5); insert into sales (product, year, region, amount) values (飞机,2001,…

MVC 架构学习笔记

MVC 架构学习笔记 Service 与 DAO 层方法命名规约业务错误是用返回值来处理还是抛异常来处理 Service 与 DAO 层方法命名规约 CRUD 是指在做计算处理时的增加(Create)、读取查询(Retrieve)、更新(Update)和删除(Delete)几个单词的首字母简写。主要被用在描述软件系统中 DataBa…

Java编程规约 :OOP 规约

文章目录 引言I OOP规约【强制】【推荐】II 知识扩展:库的分类:(一方、二方、三方库)选择定义III 术语npe异常引言 I OOP规约 【强制】 构造方法里面禁止加入任何业务逻辑,如果有初始化逻辑,请放在 init 方法中。禁止在 POJO 类中,同时存在对应属性 xxx 的 isXxx() 和…

RBAC权限控制

1、Spring Security 是一个功能强大的Java安全框架&#xff0c;它提供了全面的安全认证和授权的支持。 2 SpringSecurity配置类&#xff08;源码逐行解析&#xff09; Spring Security的配置类是实现安全控制的核心部分 开启Spring Security各种功能&#xff0c;以确保Web应…

ArcGIS Pro地形图四至角图经纬度标注与格网标注

今天来看看ArcGIS Pro 如何在地形图上设置四至角点的经纬度。方里网标注。如下图的地形图左下角经纬度标注。 如下图方里网的标注 如下为本期要介绍的例图&#xff0c;如下&#xff1a; 图片可点击放大 接下来我们来介绍一下 推荐学习&#xff1a;GIS入门模型构建器Arcpy批量…

Kubernetes Gateway API-2-跨命名空间路由

1 跨命名空间路由 Gateway API 具有跨命名空间路由的核心支持。当多个用户或团队共享底层网络基础设施时,这很有用,但必须对控制和配置进行分段,以尽量减少访问和容错域。 Gateway 和 Route(HTTPRoute,TCPRoute,GRPCRoute) 可以部署到不同的命名空间中,路由可以跨命名空间…

Web API和Web Services的区分

前些年一提及自动化测试&#xff0c;大多是指UI界面层的自动化测试。近几年&#xff0c;随着分层自动化测试概念的兴起&#xff0c;以及自动化测试自身的发展与细分&#xff0c;自动化测试包含了更多的内容。 API(Application ProgrammingInterface&#xff0c;应用程序编程接…