tlx3/laravel-jwt-starter

基于Laravel应用程序使用自己的API进行JWT身份验证的样板代码

1.1 2017-08-09 16:59 UTC

This package is not auto-updated.

Last update: 2024-09-29 03:47:17 UTC


README

在微服务架构中,客户端组件将与一组需要身份验证和授权的微服务进行通信。通常,这些微服务的用户将使用系统中的同一API进行身份验证。通常,需要在每个微服务中复制创建登录页面和身份验证中间件的步骤。

给定一个Laravel应用程序,此包将创建一个通用的登录界面,并包含相关的jwt中间件以将用户认证到您的认证API。此Laravel样板代码可以添加到现有或新项目中,配置简单。它将相应的视图、CSS和中间件发布到您的项目中。这些可以根据您的需求进行配置。

安装

要安装此包,您需要

  • Laravel 5
  • PHP 5.4 +

运行 composer require tlx3/laravel-jwt-starter 将此包的服务提供者注册到您的 config/app.php 文件的 providers 部分

   'providers' => [
       // ... other providers omitted
       TLX3\LaravelJWTStarter\LaravelJWTStarterServiceProvider::class,
   ],

然后发布必要的中间件、视图和CSS

php artisan vendor:publish
or
php artisan vendor:publish  --provider="TLX3\LaravelJWTStarter\LaravelJWTStarterServiceProvider"

此外,您还需要安装以下包

  • 表单 & HTML - laravelcollective/html
    • composer require "laravelcollective/html"
    • 更新 config/app.php 文件中的服务提供者和别名
    • 'providers' => [
           // ...
           Collective\Html\HtmlServiceProvider::class,
           // ...
       ],
       ...
       'aliases' => [
           // ...
           'Form' => Collective\Html\FormFacade::class,
           'Html' => Collective\Html\HtmlFacade::class,
           // ...
       ],
  • PHP-JWT - firebase/php-jwt
    • composer require firebase/php-jwt
  • Guzzle - guzzlehttp/guzzle
    • composer require guzzlehttp/guzzle

此项目集成了这三个包,用于表单构建器、令牌解码器和HTTP客户端。这些包具有许多功能,可以在开发过程中通过减少开销来帮助提高效率。

1) 环境变量

在您的 .env 文件中设置认证API端点、JWT密钥和成功登录响应代码,您可以根据您的需求在认证中添加/删除

AUTH_URL=
JWT_SECRET=
STATUS_CODE=

2) 中间件

更新 app/Http/Middleware/kernel.php 文件中的 $routeMiddleware 以包含添加的额外中间件。您应该修改这些中间件以及登录.blade.php视图以适应您的应用程序逻辑

    protected $routeMiddleware = [
        // ... other middleware omitted
        'checkToken' => \App\Http\Middleware\CheckToken::class,
        'notLoggedIn' => \App\Http\Middleware\NotLoggedIn::class,
        'logout' => \App\Http\Middleware\Logout::class,
        'login' => \App\Http\Middleware\Login::class,
    ];

3) 路由

更新 routes/web.php 以包含这些路由。您可以根据您的项目修改和更改这些路由,我添加了一个占位符主页作为登录后的着陆页

    Route::get('login', function () {
        return view('login');
    })->middleware('notLoggedIn');

    Route::post('authenticate', function () {
        return View::make('home');
    })->middleware('login');

    // routes that require user to have been authenticated
    Route::group(['middleware' => 'checkToken'], function () {
        Route::get('home', function () {
            return View::make('home');
        });

        Route::get('logout', function () {
            return View::make('login');
        })->middleware('logout');
    });

4) 使用方法

安装后,您现在可以访问 /login 并尝试登录,访问之前设置的受保护路由。除了路由外,您可能还需要修改 views/login.blade.phpapp/Http/Middleware/Login.php 以适应您的应用程序逻辑。认证输入在此设置,以及您可以根据需要定制的.env变量名称。您还应修改Login和CheckToken中间件以解码令牌以获取必要的有效负载项(如果需要)。

许可证

MIT