使用Thinkphp6+jwt 简单实现前后端分离
作者:小范
- 安装thinkphp
composer create-project topthink/think 目录名
在WEB目录下执行以上命令进行安装
我们cd到项目里执行命令 php think run 查看是否安装成功
到此thinkphp安装完成
- 多应用模式
安装后默认使用的是单应用模式,我们先改为多应用 以便于后期的开发
使用以下命令来安装多应用模式的扩展
composer require topthink/think-multi-app
- 首先再api应用下建立一个控制器Login
可以使用think的指令来快速生成
php think make:controller api@v1/Login
- 在api应用下建立一个路由文件
先来测试一下 添加一条路由
使用postman工具去post一下看看我们的路由是否正确
好的 是正常的,我们来进行下一步使用JWT创建token和路由使用中间件进行验证
实现授权接口需登录后才能访问,未授权接口也就是公共接口可以不需要登录就能访问
首先我们需要安装一下php-jwt扩展 使用以下命令来安装
composer require firebase/php-jwt
安装成功后首先我们来创建一个公共类来使用Jwt用来获取token和验证token
我们可以在应用目录app下面来建立一个类给它命名为JwtAuth
引入两个类
use Firebase\JWT\JWT;
use Firebase\JWT\Key;
再来写两个方法signToken 和checkToken 分别用来获取token和验证token
新增一个中间件AuthTokenmiddleware用来验证Token 若 token不合法则对该请求进行拦截
可以使用 php think make:middleware AuthTokenmiddleware 快速生成中间件
然后在Login类中新建index方法 注册路由中间件
应用后我们来测试一下 get /api/index
我们在Login中login方法中 写一个如果登录成功就去生成并返回一个token
再来测试一下 登录成功 返回token
在header中携带此token参数去get一下api/index 就发现可以正常访问了
这样一个前后端分离的框架就做好了 可以在此基础上肆意发挥哦