【功能实现】登录模块 - 学习/实践

1.应用场景

主要用于学习,整理登录模块的实现原理,以及实现方式,对应的应用场景。

2.学习/操作

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

后续补充

...

3.问题/补充

TBD

4.参考

参见上面文档列表

后续补充

...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值