1.文档阅读
HTTP 会话控制[Cookie与Session] - 学习/实践_穿素白衫的少年的博客-CSDN博客
会话管理 - 弄清楚前后端接口 Cookie、Session、Token 的区别_穿素白衫的少年的博客-CSDN博客
【功能实现】分布式系统 - 登录
2.整理输出 前言 首先先声明几个观点 1. 分布式架构与单体架构是一个层面的,针对业务层面, 2. 集群只是服务/应用部署的方式 3. 分布式架构/系统与集群的却别
区别:
分布式是指不同的业务分布在不同的地方。而集群是指多台服务器的组合,实现相同的业务。分布中的每个节点都可以集群。集群不一定是分布式的。 分布式是通过缩短单个任务的执行时间来提高效率,而集群是通过增加单位时间内执行的任务数来提高效率。
身份认证
身份认证的方式有多种,我们可以用最典型的账号密码进行认证,除此之外,我们还可以用 cookie(session)、Token、数字证书以及手机验证码来验证。
个人想法:- 仅供参考
身份认证 = 认证 + 凭证
认证与凭证是不一样的,前者是动词,后者是名词。
通常是登录【借助账号密码或者手机号&短信验证码的凭证】认证,通过之后,生成凭证【后续的凭证,换一种凭证方式,原因:更加安全,用户体验更好】,后续访问通过凭证进行认证。
上面的账号密码,手机号&手机验证码,属于登录认证时需要的凭证,
cookie(session)、Token属于后续登录后的认证凭证。
所以实现方式有:
登录凭证 + 后续凭证 + 认证动作 = 认证
那么组合方式有多种,但是要考虑各自的优缺点,从而对应应用场景。
单体架构(Monolithic Architecture) 是一种将所有功能打包在一个容器中运行的设计风格,一个实例中集成了一个系统的所有功能。通过负载均衡软件/设备实现多实例调用。 注意:
单体架构不一定只有一台Server
接下来,一个个看... 2.2 传统的登录方式 账号密码 + Cookie&Session 代码实践 PHP 原生代码
非Json交互格式
https://github.com/ningxiaofa/learning_of_php/blob/8591cd5e8a65e0ced85baa6ccdfa1711bf665334/功能模块实现/login
想要改成Json交互格式,
只要将所有响应内容和方式,改成Json即可,但是如果页面跳转【前端路由来做】,就要前端配合实现。实际上很多项目,在登录这块,还是后端负责页面跳转路由,可以减少前端的工作量,效果也更好。---- TBD
Laravel 8.x
代码参见:-- 这里是直接使用Laravel自带的入门套件,Laravel直接做了封装。 -- 包含登录、注册、密码重置、邮箱验证和密码确认等功能。使用的也是基于Web 浏览器认证方式, 至于实现的细节,需要去学习,但这不是该文章的重点。
GitHub - ningxiaofa/laravel8.test: 学习Laravel 8.x-dev 以及借助该框架实践,实现功能模块开发
入门套件 | 快速入门 | Laravel 8 中文文档 执行步骤如下:
1. 安装项目
composer create-project -- prefer-dist laravel/laravel laravel8.test 8.x-dev
2. 进入目录,修改.env的配置信息,主要是mysql
cd laravel8.test
3. 执行数据库迁移命令
php artisan migrate // 执行迁移
php artisan migrate:rollback // 为了确认可以迁移并且回滚
php artisan migrate // 重新迁移
4. 安装 Laravel Breeze
composer require laravel/breeze --dev
如果出现报错,查看报错信息:
可执行,composer require laravel/breeze:^2.1 --dev
5. 运行命令,发布认证视图、路由和控制器等资源到项目目录
php artisan breeze:install
6. 此时可以可以完全接管这些认证代码的功能实现和自定义
7. 编译前端资源让 JavaScript 和 CSS 代码生效 -- 需要安装npm,也就是安装node即可,同时最好配置国内镜像,否则很容器报timeout的问题
npm install
npm run dev
http://127.0.0.1:8001/login http://127.0.0.1:8001/register http://127.0.0.1:8001/dashboard 基于上面的分析,考虑另外一种方式 账号密码 + Token 代码实践 PHP 原生代码
TBD
Laravel
TBD
2.3 目前常用的登录方式 手机号,短信验证码 + Cookie&Session 代码实践 PHP 原生代码
TBD
Laravel
TBD
基于上面的分析,考虑另外一种方式 手机号,短信验证码 + Token 代码实践 PHP 原生代码
TBD
Laravel
TBD
2.4 总结 优缺点对比
登录凭证 | 后续凭证 | 优点 | 缺点 | 单体架构 | 分布式架构 | 账号密码 | Cookie&Session | | | | | 账号密码 | Token | | | | | 手机号,短信验证码 | Cookie&Session | | | | | 手机号,短信验证码 | Token | | | | | 后续补充 ... |