一、安装Lumen框架
使用composer命令基于Lumen框架创建项目:
composer create-project laravel/lumen:"5.6.*" Lumen-Project --prefer-dist
在.env文件中配置32位的APP_KEY以及数据库的相关配置。
二、安装dingo/api(https://github.com/dingo/api)
① 使用composer命令安装dingo/api:
composer require dingo/api:"2.0.0-alpha2"
② 配置dingo/api:
在.env文件中配置:
# dingo api
API_NAME=Lumen
API_STANDARDS_TREE=x
API_PREFIX=api
API_STRICT=false
API_DEBUG=true
API_VERSION=v1
API_SUBTYPE=lumen
③ 注册dingo/api服务到Lumen:
在App\Providers\AppServiceProvider类的register方法中添加以下代码:
$this->app->register(\Dingo\Api\Provider\LumenServiceProvider);
④ 创建dingo/api的配置文件config/api.php
Lumen框架不自带config目录,需要自行在项目根目录下创建。
api.php可以在vendor/dingo/api/config目录下找到,同理,Lumen框架的配置文件也可在Lumen框架源码中找到。
⑤ 完成以上步骤,可以在routes/web.php中添加以下代码测试是否安装成功:
$api = $app['Dingo\Api\Routing\Router'];
$api->version('v1', function ($api) {
$api->get('/', function () {
return [
'status' => '200',
'msg' => '成功',
'data' => [
'name' => 'Alan',
'age' => 18
],
];
});
});
三、安装tymon/jwt-auth
① 使用composer安装:
composer require tymon/jwt-auth:"1.0.0-rc.2"
注意:jwt-auth稳定版为0.5,其对lumen高版本不太兼容,所以采用jwt-auth 1.0版
② 修改bootstrap/app.php文件:
去除以下行的注释:
$app->withFacades();
$app->withEloqent();
$app->routeMiddleware([
'auth' => App\Http\Middleware\Authenticate::class,
]);
$app->register(App\Providers\AppServiceProvider::class);
$app->register(App\Providers\AuthServiceProvider::class);
③ 修改app/Providers/AppServiceProvider.php文件:
在AppServiceProvider类中的register方法里添加以下代码:
$this->app
->register(\Tymon\JWTAuth\Providers\LumenServiceProvider::class);
④ 将Lumen框架的配置文件auth.php复制到config/auth.php,并修改内容为:
<?php
return [
'defaults' => [
'guard' => env('AUTH_GUARD', 'api'),
'passwords' => 'users',
],
'guards' => [
'api' => [
'driver' => 'jwt',
'provider' => 'users'
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
],
'passwords' => [
//
],
];
⑤ 修改配置文件,将dingo/api和tymon/jwt-auth关联:
修改dingo/api的配置文件config/api.php:
'auth' => [
'jwt' => 'Dingo\Api\Auth\Provider\JWT',
],
完成以上步骤就完成了在Lumen框架下dingo/api和tymon/jwt-auth的安装。
⑥ 生成jwt的secret:
php artisan jwt:secret