devianl2/service-logging

1.0.1 2022-10-06 23:53 UTC

This package is auto-updated.

Last update: 2024-09-07 04:06:17 UTC


README

Tenant auth 是一个 laravel 包,用于验证 JWT 令牌及其声明属性,并将其设置到请求头中

对于每个微服务的开发,您需要遵循以下说明以确保应用程序标准化。

步骤 1

通过 composer 安装

composer require devianl2/tenant-auth

运行以下命令进行公钥配置

php artisan vendor:publish --provider="Tenant\Auth\TenantAuthProvider"

步骤 2

要使用此包,请确保任何 API 请求 都有 Authorization 头,任何 Web 请求 都有在 cookie 中的 Authorization 键

转到 App\Http\Middleware\Kernel 并添加以下语法

 protected $middleware = [
        // \App\Http\Middleware\TrustHosts::class,
        \App\Http\Middleware\TrustProxies::class,
        ...
        **\Tenant\Auth\Middleware\TenantAuthMiddleware::class**
    ];

步骤 3(可选)

如果您正在使用 $routeMiddleware 并自行定义中间件组,您可以执行以下操作

转到 App\Http\Kernel 并添加您自己的路由中间件,如下所示

protected $routeMiddleware = [
        .....
        'tenant-auth'   =>  \Tenant\Auth\Middleware\TenantAuthMiddleware::class
    ];

转到 App\Http\Middleware\EncryptCookies 并将 Authorization 添加到 except 数组中,因为 Laravel Cookie 默认对所有值进行加密,但在此情况下,由于它由网关生成,因此不需要对 Authorization 令牌进行加密。

protected $except = [
        'Authorization'
    ];

转到 App\Http\Middleware\Kernel 并添加以下语法

 protected $middleware = [
        // \App\Http\Middleware\TrustHosts::class,
        \App\Http\Middleware\TrustProxies::class,
        ...
        **\Tenant\Auth\Middleware\TenantAuthMiddleware::class**
    ];

注意

如果 JWT 令牌有效,此包将自动提取以下信息

  • x-user-uuid(当前用户的 uuid)
  • x-tenant-uuid(当前用户的租户 id)
  • x-tenant-url(当前用户的租户 url)
  • x-scopes(当前用户的权限 / json 编码)
  • x-roles(当前用户的角色。例如:admin/users。/ Json 编码)
  • x-modules(用户可以访问的模块 / json 编码)

您可以使用 $request 在控制器中提取信息,例如 $request->header('x-user-uuid');