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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1. @Override
2. public ResponseResult login(LoginDto dto) {
3. //1.校验用户手机号和密码 不为空就是正常登录 否则就是游客登录
4. if(!StringUtils.isBlank(dto.getPhone()) && !StringUtils.isBlank(dto.getPassword())){
5. ApUser apUser = getOne(Wrappers.<ApUser>lambdaQuery().eq(ApUser::getPhone, dto.getPhone()));
6. //1.1判断用户是否存在
7. if(apUser == null){
8. return ResponseResult.errorResult(AppHttpCodeEnum.DATA_EXIST,"用户不存在");
9.         }
10. //1.2校验密码
11. String salt = apUser.getSalt();
12. String password = dto.getPassword();
13.         password = DigestUtils.md5DigestAsHex((password+salt).getBytes());
14. if(!password.equals(apUser.getPassword())){
15. return ResponseResult.errorResult(AppHttpCodeEnum.LOGIN_PASSWORD_ERROR);
16.         }
17. //1.3返回数据
18.         Map<String,Object> map = new HashMap<>();
19.         map.put("token",AppJwtUtil.getToken(apUser.getId().longValue()));
20.         apUser.setSalt("");
21.         apUser.setPassword("");
22.         map.put("user",apUser);
23. return ResponseResult.okResult(map);
24.     }else{
25. //2.游客登录
26.         Map<String,Object> map = new HashMap<>();
27.         map.put("token",AppJwtUtil.getToken(0l));
28. return ResponseResult.okResult(map);
29.     }
30.
相关文章
|
8月前
|
API 开发工具 Android开发
解决 Android App 上架 Google play后 ,签名变更,第三方sdk无法登录
解决 Android App 上架 Google play后 ,签名变更,第三方sdk无法登录
164 0
|
10月前
|
小程序 数据库 微服务
结合ruoyi-cloud和ruoyi-app实现微信小程序的授权登录
结合ruoyi-cloud和ruoyi-app实现微信小程序的授权登录
410 0
|
10月前
|
Dart IDE 开发工具
【腾讯云 Cloud Studio 实战训练营】尝鲜体验Flutter编写一个App应用
欢迎参加腾讯云 Cloud Studio 实战训练营!在本次训练营中,我们将通过App项目入口说明,基本文件说明,基础框架搭建,带您一步步编写一个基于 Flutter 的静态App系统。无论您是初学者还是有一定编程经验的开发者,本训练营都将为您提供一个深入了解和掌握 Flutter 技术以及App开发的机会。 使用 Flutter作为UI框架,我们将能够充分利用其强大的功能和优势,快速搭建一个高效、可扩展的App系统。Flutter是Google开源的构建用户界面(UI)工具包,帮助开发者通过一套代码库高效构建多平台精美应用,支持移动、Web、桌面和嵌入式平台。
【腾讯云 Cloud Studio 实战训练营】尝鲜体验Flutter编写一个App应用
|
10月前
|
安全 数据安全/隐私保护 Python
Crack App | 某赢+ 二手车 App 登录参数加密逻辑分析
Crack App | 某赢+ 二手车 App 登录参数加密逻辑分析
|
8月前
|
缓存 移动开发 小程序
从零玩转系列之微信支付实战Uni-App微信授权登录和装修下单页面和搭建下单接口以及发起下单请求3
从零玩转系列之微信支付实战Uni-App微信授权登录和装修下单页面和搭建下单接口以及发起下单请求3
101 0
|
8月前
|
缓存 小程序 API
从零玩转系列之微信支付实战Uni-App微信授权登录和装修下单页面和搭建下单接口以及发起下单请求2
从零玩转系列之微信支付实战Uni-App微信授权登录和装修下单页面和搭建下单接口以及发起下单请求2
102 0
|
8月前
|
小程序 前端开发 安全
从零玩转系列之微信支付实战Uni-App微信授权登录和装修下单页面和搭建下单接口以及发起下单请求1
从零玩转系列之微信支付实战Uni-App微信授权登录和装修下单页面和搭建下单接口以及发起下单请求
66 0
从零玩转系列之微信支付实战Uni-App微信授权登录和装修下单页面和搭建下单接口以及发起下单请求1
|
10月前
|
安全 数据安全/隐私保护 Python
Crack App | 某合伙人登录参数 apisign 逻辑分析
Crack App | 某合伙人登录参数 apisign 逻辑分析
|
10月前
|
API
App实现登录页面切换头像的流程
在APP的登录操作中头像可根据用户需求自定义上传图片
97 0
|
11月前
|
XML 前端开发 应用服务中间件
【黑马头条训练营】day02-黑马头条-App端文章展示
【黑马头条训练营】day02-黑马头条-App端文章展示
148 0

热门文章

最新文章