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
之后