在laravel中使用jwt

66 篇文章 4 订阅

jwt它的两大使用场景是:认证和数据交换

安装及基础配置

使用 composer 安装

composer require tymon/jwt-auth

在安装完成后,会生成这样一个目录
在这里插入图片描述

进行一些配置–只对laravel5.4以下的版本

这里值得注意的是,有些文档会说要添加Tymon\JWTAuth\Providers\LaravelServiceProvider::class ,这只在 Laravel 5.4
及以下版本是必要的,更新的 Laravel 版本无需添加。

发布配置文件

//这条命令会在 config 下增加一个 jwt.php 的配置文件
php artisan vendor:publish --
provider="Tymon\JWTAuth\Providers\LaravelServiceProvider"

生成配置成功后,会在config目录中生成这样一个配置文件
在这里插入图片描述
生成加密密钥
还有需要生成加密字段,会在.env中生成新的数据

php artisan jwt:secret

例如,生成了

JWT_SECRET=w5NpwYgUTGBt1lVufOhy40SDnRICjqOtTRWHSrdf2aOplnxRulMh26qjVzPNGA9P

更新模型
由于大多数jwt都是用来验证用户的,所以,这里我用user模型来测试

首先,需要要实现JWTSubject
例如:
class User extends Authenticatable implements JWTSubject
第二,既然是需要实现,那么就要在类中去实现它

/**
     * Get the identifier that will be stored in the subject claim of the JWT.
     *
     * @return mixed
     */
    public function getJWTIdentifier()
    {
        return $this->getKey();
    }

    /**
     * Return a key value array, containing any custom claims to be added to the JWT.
     *
     * @return array
     */
    public function getJWTCustomClaims()
    {
        return [];
    }

修改 auth.php
在config/auth.php中修改

'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],
        'api'=>[
            'driver' => 'jwt',        // 原来是 token 改成jwt
            'provider' => 'users',
        ]
    ],

然后,我需要jwt可以使用Dingo,就要在config\api中去配置
找到’auth’=>[]这个配置

'auth' => [
        'jwt' => 'Dingo\Api\Auth\Provider\JWT',
    ],

tymon/jwt-auth 是使用第三方来集成 JWT 身份验证的软件包。
一旦您安装了这个软件包,您就可以在 config/api.php 文件或者引导文件中配置该服务提供者

如果使用jwt的话,在登录成功后,会生成一段token,那怎么使用这段token呢
在这里插入图片描述
需要把它带到header头里面
在这里插入图片描述

看图,需要一个Authorization参数,其参数值是token类型再空一个格,后面就是token了
比如

Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9hcGkudGVzdFwvYXBpXC9sb2dpbiIsImlhdCI6MTYzMDkzNTQ0MywiZXhwIjoxNjMwOTM5MDQzLCJuYmYiOjE2MzA5MzU0NDMsImp0aSI6IjVESktaUExlMXpJM3pjQVQiLCJzdWIiOjEsInBydiI6IjIzYmQ1Yzg5NDlmNjAwYWRiMzllNzAxYzQwMDg3MmRiN2E1OTc2ZjcifQ.EV5-n61uq8bcGFIciQzW5pHGEIwLHujHM7YNMdKIb3E

从token获取信息
都可以获取已登录用户信息,当然,前提是传递了token

//第一种写法
$user = app(Auth::class)->user();
        return $user;
//第二种写法
$user = auth('api')->user();
        return $user;
//第三种写法
$user = $this->auth->user();
return $user;
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小信啊啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值