JWT详解 2 Laravel 安装使用JWT

简介: JWT详解 2 Laravel 安装使用JWT

安装

Laravel使用的jwt组件推荐使用tymon/jwt-auth

composer

composer require tymon/jwt-auth

部署

修改config/app.php,添加内容

'providers' => [
    Tymon\JWTAuth\Providers\LaravelServiceProvider::class,
]

在根目录执行

php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\LaravelServiceProvider"

执行之后,你会在config文件夹内找到jwt.php

生成密钥

php artisan jwt:secret

之后你会在.env中看到随机生成的key

JWT_SECRET=xxxxxx

配置验证的用户模型

用户验证的模型需要继承Authenticatable并实现JWTSubject,事例如下

<?php
namespace App;
use Tymon\JWTAuth\Contracts\JWTSubject;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable implements JWTSubject
{
    use Notifiable;
    // Rest omitted for brevity
    /**
     * 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

修改auth.php,我们需要将上面的model加入验证中

简易理解可分成三层

providers

可以理解为底层驱动,实现方式是数据库模型,还是redis,还是文件存储,都可以定义

'patients' => [
            'driver' => 'eloquent',
            'model' => App\Models\PatientUser::class,
        ],

guards

使用什么验证方式,并用哪个驱动

'apipatient' => [
            'driver' => 'jwt',
            'provider' => 'patients',
        ],

defaults

默认使用哪个作为用户验证

'defaults' => [
        'guard' => 'apidoctor',
        'passwords' => 'users',
    ],

passwords 暂时不管,有时间再单独讲解

控制器使用

可以在控制器中构造函数引入中间件

public function __construct()
    {
        $this->middleware('auth:api', ['except' => ['login']]);
    }

简单调用

登录返回的token

$credentials = request(['mobile', 'password']);
$token = auth($this->guard)->attempt($credentials)

或者通过自己的方式验证之后登录得到token

$token = auth($this->guard)->login($uid);

uid是一个user对象,因为之前配置user实现了JWTSubject,所以可以被作为参数

参考资料

相关文章
|
中间件 PHP
JWT详解 3 Laravel JWT自定义错误返回
JWT详解 3 Laravel JWT自定义错误返回
344 0
|
存储 中间件 PHP
【laravel项目】@6 JWT生成的token本地化存储
【laravel项目】@6 JWT生成的token本地化存储
315 0
【laravel项目】@6 JWT生成的token本地化存储
|
API PHP
【laravel】@25 dingo配合laravel、JWT使用
【laravel】@25 dingo配合laravel、JWT使用
133 0
【laravel】@25 dingo配合laravel、JWT使用
|
PHP
【laravel】@24 JWT+laravel实操
【laravel】@24 JWT+laravel实操
116 0
【laravel】@24 JWT+laravel实操
|
PHP
【laravel】JWT过期报错Route [login] not defined.
【laravel】JWT过期报错Route [login] not defined.
269 0
【laravel】JWT过期报错Route [login] not defined.
|
PHP
【laravel】@23 JWT验证
【laravel】@23 JWT验证
93 0
|
中间件 测试技术 API
API接口JWT方式的Token认证(上),服务器(Laravel)的实现
API接口JWT方式的Token认证(上),服务器(Laravel)的实现 最近在开发一个 Android 程序,需要做用户登录和认证功能,另外服务器用的是 Laravel 框架搭建的。
6773 0
|
3月前
|
SQL Java 测试技术
在Spring boot中 使用JWT和过滤器实现登录认证
在Spring boot中 使用JWT和过滤器实现登录认证
218 0
|
22天前
|
JSON 安全 算法
|
22天前
|
存储 安全 Java

热门文章

最新文章