devianl2/tenant-auth

微服务认证包

1.0.16 2022-04-15 01:10 UTC

This package is auto-updated.

Last update: 2024-09-15 06:01:19 UTC


README

租户认证是一个Laravel包,用于验证JWT令牌及其声明属性并将它们设置到请求头中。

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

步骤 1

通过composer安装

composer require devianl2/tenant-auth

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

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

步骤 2

使用此包时,请确保任何API请求都包含授权头,而任何Web请求都包含在cookie中的授权键。

转到 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');