JWT代表Json Web Token. JWT能有效地进行身份验证并连接前后端。

操作环境:Laravel 5.5 + PHP 7.1

目的:完成用户认证,取得Token / 通过Token取得当前登录用户

参考网址:

通过尝试,以上方法只适用于Laravel 5.2,因为更高版本中,/routes路径下有web.php和api.php,会导致CSRF令牌问题,详见https://github.com/laravelbrasil/forum/issues/136

所以抛弃以上做法,选择使用Dingle进行配置

参考网址:

注:

  • 在生成key(php artisan jwt:generate)时,系统报错:

    1
    2
    [ReflectionException]                                                      
    Method Tymon\JWTAuth\Commands\JWTGenerateCommand::handle() does not exist

    解决方案:

    在 /vendor/tymon/jwt-auth/src/Commands/JWTGenerateCommand.php 中添加方法:

    1
    2
    3
    4
    public function handle()
    {
    $this->fire();
    }

    即可解决

  • 文档中关于PostsController的部分可以忽略
  • 配置完成后,测试时可能会遇到错误

    1
    Argument 1 passed to Illuminate\Auth\EloquentUserProvider::validateCredentials() must be an instance of Illuminate\Contracts\Auth\Authenticatable, instance of App\User given...

    解决方案:

    在 /app/User.php 中,修改代码为

    1
    2
    3
    4
    5
    6
    7
    ...
    use Illuminate\Contracts\Auth\Authenticatable;
    use Illuminate\Auth\Authenticatable as AuthenticableTrait;
    class User extends \Eloquent implements Authenticatable
    {
    use AuthenticableTrait;
    ...

    即可解决

配置完成后,可以用postman进行测试,完美!!❤️❤️