Dingo + Laravel + JWT + Entrust + memcache 实现API设计
Dingo Api 是一个为laravel设计的用于API开发的开源包,规范和简化了Api的设计
JWT 即 Json Web Token,是一种新的用于API认证方式,区别于传统的Session和Cookie方式,便于携带而且比较安全,因为token只设计为单次请求
Entrust 是一套基于角色的权限管理系统,用于分层系统设计
Memcache 是一个NoSQL存储系统,使用键值对将数据存储在内存中,实现快速访问
DingoApi 安装及使用
https://github.com/dingo/api
- 安装
//项目基本目录下执行
composer require dingo/api:1.0.x@dev
//config/app.php
'providers' => [
Dingo\Api\Provider\LaravelServiceProvider::class
]
//发布配置文件
php artisan vendor:publish --provider="Dingo\Api\Provider\LaravelServiceProvider"
- 配置
//配置可以卸载.env文件中或者config/api.php
API_STANDARDS_TREE=vnd //api 标准
API_SUBTYPE=myapp //项目短名称
API_PREFIX=api
API_DOMAIN=api.myapp.com //这里记住API_PREFIX或者API_DOMAIN通知只能配置一个,或的关系,访问的时候通过 http://127.0.0.1:8000/api/your_route 或者 http://api.myapp.com/your_route
API_VERSION=v1
API_NAME="My API" //在.env文件中一定要注意不能有多余的空格,负责出现莫名的错误,如果写成API_NAME=My API就会出错
API_CONDITIONAL_REQUEST=false
API_STRICT=false //如果配置为真,将需要在每次访问api是添加Accept头:application/vnd.myapp.v1+json
API_DEFAULT_FORMAT=json //api返回格式
API_DEBUG=true //API调试
- 认证方式
认证方式我们采用JWT方式,关于JWT可以自行谷歌,其他的配置请参考dingo/api 文档
'auth' => [
'jwt' => 'Dingo\Api\Auth\Provider\JWT',
],
JWT认证方式
https://github.com/tymondesigns/jwt-auth
- 安装
composer require "tymon/jwt-auth:0.5.*"
//添加服务
'Tymon\JWTAuth\Providers\JWTAuthServiceProvider'
//添加alias
JWTAuth' => 'Tymon\JWTAuth\Facades\JWTAuth'
//发布配置文件
php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\JWTAuthServiceProvider"
//生成jwt:key
php artisan jwt:generate
- 配置,请参考文档,没什么好说的
- 创建token
token可以基于任何传入的数据创建,不过我们一般使用从用户创建token,如: