devianl2 / service-logging
微服务日志
1.0.1
2022-10-06 23:53 UTC
Requires
- laravel/framework: ^8.0|^9.0
Requires (Dev)
- phpunit/phpunit: ^9.5.10
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');