devianl2 / tenant-auth
微服务认证包
1.0.16
2022-04-15 01:10 UTC
Requires
- ext-openssl: *
- laravel/framework: ^8.0|^9.0
- lcobucci/jwt: ^4.1
Requires (Dev)
- phpunit/phpunit: ^9.5.10
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');