Laravel8使用jwt+redis+mysql 实现登录功能
在现在前后端分离的时代,使用PHP开发APP后台API(接口)是很多公司的选择。但是传统的PHP开发API没有系统的把PHP当做一个工程化的项目来开发,没有明确各个模块的职责,所以本文写的是一种比较通用的PHP开发API的方式,简单的从API输入输出、API鉴权,业务异常处理等模块来描述API各个模块以及各个模块之间的关系。本文采用laravel8+redis+mysql实现一个简单的登录功能,以及获取用户数据。一、下载jwt扩展库:使用composer下载composerrequirelcobucci/jwt接着执行,生成自动加载文件composerdump-autoload可以参考这篇文章:Laravel8安装jwt扩展二、创建数据库和数据表创建用户表/*
NavicatMySQLDataTransfer
SourceServer:localhost_3306
SourceServerType:MySQL
SourceServerVersion:50726
SourceHost:localhost:3306
SourceSchema:laravel8
TargetServerType:MySQL
TargetServerVersion:50726
FileEncoding:65001
Date:15/10/202014:17:27
*/
SETNAMESutf8mb4;
SETFOREIGN_KEY_CHECKS=0;
------------------------------
--Tablestructureforl_user
------------------------------
DROPTABLEIFEXISTS`l_user`;
CREATETABLE`l_user`(
`id`int(10)NOTNULLAUTO_INCREMENT,
`name`varchar(255)CHARACTERSETutf8COLLATEutf8_unicode_ciNULLDEFAULTNULL,
`email`varchar(255)CHARACTERSETutf8COLLATEutf8_unicode_ciNULLDEFAULTNULL,
`password`varchar(255)CHARACTERSETutf8COLLATEutf8_unicode_ciNULLDEFAULTNULL,
`created_at`timestamp(0)NULLDEFAULTNULL,
`updated_at`timestamp(0)NULLDEFAULTNULL,
PRIMARYKEY(`id`)USINGBTREE,
UNIQUEINDEX`email`(`email`)USINGBTREE
)ENGINE=MyISAMAUTO_INCREMENT=2CHARACTERSET=utf8COLLATE=utf8_unicode_ciROW_FORMAT=Dynamic;
------------------------------
--Recordsofl_user
------------------------------
INSERTINTO`l_user`VALUES(1,'admin','123456@qq.com','$2y$10$SojwOG45s8BaDi00NnDvnO4U.Y.BUPsDEwJc5AILAyRrNwoI5b3Wy',NULL,NULL);
SETFOREIGN_KEY_CHECKS=1;说明:默认账号123456@qq.com 密码:123456三、创建文件和编写代码1、 添加路由web.php2、封装jwt:项目根目录下新建Common\Auth\JwtAuth.php3、 创建中间件:app\Http\Middleware\CheckLogin.php4、 登录接口和获取数据接口,使用redis缓存加速用户信息接口获取数据。四、测试接口数据[使用postman来测试接口数据]1、访问登录接口:携带email和passwordhttp://www.laravel8.com/login?email=123456@qq.com&password=1234562、访问获取数据接口:携带上面生成的token,返回用户信息http://www.laravel8.com/info?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJhcGkudGVzdC5jb20iLCJhdWQiOiJzZXJ2ZXJfYXBwIiwiaWF0IjoxNjAyNzQxMDYyLCJleHAiOjE2MDI3NDQ2NjIsInVpZCI6MX0.UdQP30IhNuhe-1jd_iYXHIl6-23EwNisea4oSe_0z7c以上是一个简单的使用jwt实现登录登录功能,供大家参看。