开发者学堂课程【微服务+全栈在线教育实战项目演练(SpringCloud Alibaba+SpringBoot):总结项目功能点(前台系统1)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/667/detail/11558
总结项目功能点(前台系统1)
内容介绍:
一、首页数据显示
二、注册功能
三、登录功能
一、首页数据显示
前台用户系统运用3000进行访问
(1)显示幻灯片功能/Baner 轮播图
(2)显示热门课程
(3)显示名师大咖
在面试过程中,如果被提问到幻灯片显示的内容或多久进行一次更换等,可以回答幻灯片是按照实际内容来进行显示,根据 id 排序每次显示前两条最新数据,课程也显示最新添加的课程或者根据播放量找出最热门播放的几门课程,名师亦是如此。
二、注册功能
在注册的过程中,除了填写基本信息外,同时也进行了获取手机验证码的功能。
(1)获取手机验证码
整合阿里云的短信服务,通过短信服务发送手机验证码,完成注册功能。
三、登录功能
(1)普通登录
SSO(单点登录):单点登录有很多种实现方式,如 session 广播机制实现、使用 cookie + redis 实现以及使用token 实现,这三种为常见的实现方式,但为底层的实现过程,在实际的项目过程中会有一些框架使其更加方便。
第一种方式为 session 广播机制实现,即通过 session 复制;
第二种方式为使用 cookie + redis 实现,在登陆之后将数据放到两个地方,即 cookie 和 redis,下次登录会带着cookie 发送,运用 cookie 的值查询 redis 中是否有数据,有数据即为登录,没有数据即为没有登陆;
第三种方式为使用 token 实现,在登陆之后,根据一定的规则生成字符串,字符串中包含用户信息,可以将 token 字符串通过 cookie 返回或者通过地址栏返回,每次访问都带着 token 值在里面进行查询,如果从 token 中得到用户信息则为登录,否则为没有登录。
token 字符串通过 JWT 进行生成。
JWT 由三部分组成
第一部分为 jwt 头信息
第二部分为有效载荷、包括主体信息(用户信息),
第三部分为签名哈希即添加防伪标志。
登录流程:
第一步为调用登录接口返回 token 字符串;
第二步为将返回的 token 字符串放到 cookie 里面;
第三步为创建前端拦截器做判断,判断 cookie 里面是否有 token 字符串,如果有则把 token 字符串放到 header(请求头);
第四步为根据 token 值,调用接口,根据 token 获取用户信息,为了首页面显示,把调用接口返回用户信息放到cookie 里;
第五步为在首页面显示用户信息,从第四步 cookie 获取用户信息。
(2)微信扫描登录
OAuth2:OAuth2是针对特定问题的解决方案,主要有两个问题:开放系统间授权和分布式访问。
如现在不同系统间要互相访问,但默认是访问不到的,这时要进行授权来解决问题;
在进行单点登录时,第一个模块登录后其他模块就不需要再进行登录,可以直接进行访问。
所以 OAuth2的解决方案为令牌机制,按照一定规则生成字符串,字符串包含用户信息。
但需要注意 OAuth2只是一种解决方案,按照一定规则生成字符串,但规则没有规定,同时 OAuth2也不是一种协议。
实现获取扫描人信息过程:
通过扫描二维码得到扫描二维码的人的信息,得到信息后在首页面中显示数据,显示数据仍用 cookie + header 来进行操作。
通过第一步为扫描之后,在微信过程中会返回 code 值,代表临时票据,即类似于手机验证码,随机唯一的值,执行本地的 callback 方法,在 callback 获取两个值,在跳转时候传递过来;
第二步为运用第一步获取到的 code 值,请求微信提供固定的地址,获取到有两个值:access_token和openid,access_token 为访问凭证,openid 为每个微信唯一标识;
第三步为运用第二步获取到的两个值 access_token 和 openid,再去请求一个微信提供固定地址,最终可以得到微信扫描人信息,包括微信名称、微信头像等等来实现获取扫描人信息过程。