Lumen配置jwt详细教程

环境

  PHP 7.0.14 + Apache 2.4

配置

1.Lumen 5.4的安装与配置

1-1 安装

  • 通过Lumen安装器

    首先,使用 Composer 下载 Lumen 安装包:

    1
    composer global require "laravel/lumen-installer"

    注:确保已经将~/.composer/vendor/bin添加到PATH中,只有这样系统才能找到 lumen 的执行文件。

    然后使用lumen new命令来新建lumen项目:

    1
    lumen new blog_ibye_cn
  • 通过Composer Create-Project命令

    只需要在终端输入:

    1
    composer create-project --prefer-dist laravel/lumen blog_ibye_cn

    即可。

1-2 配置

  在项目的根目录可以看到.env.example文件,这是该项目的一个配置文件,将该文件复制一份,然后改名为.env,然后打开.env文件,在里面找到APP_KEY项,输入一个app_key,因为lumen不像laravel那样提供app_key的自动生成功能。

2.安装与配置jwt库

2-1 安装与配置

  yoGa本人使用的是tymon/jwt-auth,你也可以使用其他的库。

2-1-1 可以通过composer安装:

1
composer require tymon/jwt-auth

2-1-2 修改你的项目/bootstrap/app.php文件

  找到注释为Register Service Providers的地方,在下面添加如下代码:

1
$app->register(Tymon\JWTAuth\Providers\JWTAuthServiceProvider::class);

  这样我们就为我们的应用注册了JWTAuth的服务提供者了。程序启动的时候就会加载它。

2-1-3 生成密钥

  注意了,这里就是一个大坑,jwt-auth的文档对lumen的说明很少,很容易被坑了,官方介绍了Laravel 5的配置方法是这样的:

  1. 执行php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\JWTAuthServiceProvider"
  2. 执行php artisan jwt:generate

  在lumen中这样是不行的,第一步已经出错了。

  正确的做法应该是这样的:

  1. 使用composer安装laravelista/lumen-vendor-publish

    1
    composer require laravelista/lumen-vendor-publish
  2. 修改app/Console/Kernel.php文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class Kernel extends ConsoleKernel
    {
    protected $commands = [
    //**************就是添加这句↓************
    \Laravelista\LumenVendorPublish\VendorPublishCommand::class
    //**************就是添加这句↑************
    ];
    protected function schedule(Schedule $schedule)
    {
    }
    }
  3. 执行php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\JWTAuthServiceProvider"

  4. 执行php artisan jwt:generate

      第三步可能会出现错误(感觉lumen一定会出现,laravel就一般不会):

      如果出现上图的错误,如果出现错误,就继续看5、6、7

  5. app目录下创建一个文件JwtAuth.php

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <?php
    /**
    * Created by PhpStorm.
    * User: yoga
    * Date: 17/5/6
    * Time: 21:04
    */
    if ( ! function_exists('config_path'))
    {
    /**
    * Get the configuration path.
    *
    * @param string $path
    * @return string
    */
    function config_path($path = '')
    {
    return app()->basePath() . '/config' . ($path ? '/' . $path : $path);
    }
    }
  6. 在根目录 composer.json 文件内 “autoload” 部分添加自动加载 JwtAuth.php

    1
    2
    3
    "files": [
    "app/JwtAuth.php"
    ]
  7. 终端执行composer dump-autoload,之后再执行3、4

根目录会多了一个文件config/jwt.php,这样Lumen5.4+jwt就配置成功了。

------ 本文结束 ------

版权声明

yoGa's Blog by yoga lee is licensed under a Creative Commons BY-NC-ND 4.0 International License.
yoga lee创作并维护的yoGa's Blog采用创作共用保留署名-非商业-禁止演绎4.0国际许可证
本文首发于yoGa's Bloghttp://yoga.ibye.cn ),版权所有,若需转载请注明出处,谢谢支持。