iqbalatma/laravel-jwt-auth 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

iqbalatma/laravel-jwt-auth

最新稳定版本:1.2.1

Composer 安装命令:

composer require iqbalatma/laravel-jwt-auth

包简介

Laravel JWT Blacklist and Refresh Custom Mechanism

README 文档

README

Laravel jwt with access and refresh mechanism custom from PHP-Open-Source-Saver / jwt-auth

Credits

This is package used PHP-Open-Source-Saver/jwt-auth that forked from tymondesigns/jwt-auth This packages just abstract PHP-Open-Source-Saver/jwt-auth and change refresh token behavior.

Why you need this package ?

PHP-Open-Source-Saver/jwt-auth package use only 1 token (access token) to get protected resource while I need 2 types of token (access and refresh). I make access token with short ttl and refresh token with long ttl. Why do i need 2 types of token ? When access token been compromised, it just short time access so hacker has limited time and cannot re-invoke new token. On PHP-Open-Source-Saver/jwt-auth to refresh token (re-invoke new token) is using access token I change this behavior so we will have 2 types of token. So when hacker get access token they cannot re-invoke new token because it's need refresh token.

The other case is when you set access token with short ttl, you cannot re-invoke new tokens because you need valid access token. On this package when your access token is invalid you still can re-invoke new token with refresh token

How to install this package ?

Install via composer

composer require iqbalatma/laravel-jwt-auth

Copy service profider into config/app.php

Iqbalatma\LaravelJwtAuth\Providers\LaravelServiceProvider::class,

Publish vendor using command below

php artisan vendor:publish --provider="Iqbalatma\LaravelJwtAuth\Providers\LaravelServiceProvider"

Generate jwt secret key

php artisan jwt:secret

Package ready to use

How to use this package ?

Here is how to use this package

Configure Auth Config Guard

Modify your config/auth.php

<?php


    'defaults' => [
        'guard' => 'api',
        'passwords' => 'users',
    ],
    .....
    'guards' => [
        'api' => [
            'driver' => 'jwt',
            'provider' => 'users',
        ],
    ],

Update User Model

Modify your model contract and add some method that need to be implemented

<?php

namespace App;

use Iqbalatma\LaravelJwtAuth\Contracts\Interfaces\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 [];
    }
}

Use Middleware on Route

Here is example how to protect route with middleware

<?php

  Route::get("users", [App\Http\Controllers\UserController::class, "index"])->middleware("api");

How to invoke access token and refresh token

Here is how to invoke access token and refresh token

<?php

use Iqbalatma\LaravelJwtAuth\Services\JWTService;

$jwtService = new JWTService();

$accessToken = $jwtService->invokeAccessToken($credentials);
$refreshToken = $jwtService->infokeRefreshToken();

统计信息

  • 总下载量: 19
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2023-07-23