absolvent / bundle-api
2.3.0
2018-03-16 10:27 UTC
Requires
- php: >=7.1.0
- absolvent/bundle-swagger: ^1.4.8
- codecasts/laravel-jwt: ^0.8.5
- laravel/framework: 5.4.*|5.6.*
- league/fractal: ^0.15.0
- league/uri: ^5.0
- riverline/multipart-parser: ^1.1
- symfony/yaml: ^3.2
Requires (Dev)
- barryvdh/laravel-ide-helper: ^2.4
- fzaninotto/faker: ~1.4
- mockery/mockery: 0.9.*
- phpunit/phpunit: ~5.7
README
JWT身份验证守卫
在项目中启用
- 将
Absolvent\api\Providers\AuthServiceProvider添加到config/app.php的提供者中。 - 创建
config/jwt.php,类似于本包中的config/jwt.php - 在
config/auth.php中将defaults.guard改为jwt - 添加
'jwt' => [
'driver' => 'jwt',
'provider' => 'users',
],
到 config/auth.php 中的 guards
- 将
JWT_SECRET变量添加到.env文件中(例如:JWT_SECRET=SvfJknJLYWwvadkCLVE7HIzn2JpWDkXv)
注意:JWT_SECRET 应与 microservice-users 中的相同
使用方法
通常,当 JwtAuthenticationGuard 配置正确时,所有 Laravel 授权和身份验证功能都应正常工作。
获取 jwt 令牌/用户信息
use Illuminate\Support\Facades\Auth;
$user = Auth::user(); // returns JwtUser or null
$user = Auth::authenticate() // returns JwtUser or throws Exception
$jwtToken = Auth::getName(); // returns jwt token
$userSub = Auth::id(); // returns user email (jwt token `sub` claim)
用户信息来自 jwt 令牌,因此非常基础。要获取扩展用户信息,您必须对 microservice-users 发出调用。
基于权限的端点身份验证
将 permission 或 can 中间件添加到端点控制器
class EndpointController extends \Absolvent\api\Http\Controller
{
public function __construct()
{
$this->middleware('permission:TALENTDAYS_ADMIN|TALENTDAYS_AREA');
}
// ...
}
在上面的示例中,只有具有 TALENTDAYS_ADMIN 或 TALENTDAYS_AREA 的用户才能访问端点
允许发送带有 multipart-form 内容类型的 PATH 请求
将 Absolvent\api\Http\Middleware\PreparePatchMultiPartForm 添加到 Absolvent\api\Http\Kernel::$middleware
确保 PreparePatchMultiPartForm 在 ValidatePostSize 之后