OAuth 与Passport
前后端分离的API认证
passport:client
注册第三方应用
CLIENT_ID
及 CLIENT_SECRET
CLIENT_SECRET
,来得到令牌常用的认证的类型
passport流程
storage
目录下生成oauth公私钥 php artisan passport:install
Laravel\Passport\HasApiTokens
TraitLaravel\Passport\Passport::routes()
,路由前缀为 /oauth
\Laravel\Passport\Http\Middleware\CreateFreshApiToken::class,
中间件
Web
页面登录表单登录后在 Cookie
中设置一个 Token
auth:api
认证中间件,api认证驱动是 passportapi
参数,针对 API
接口认证会通过 Laravel\Passport\Guards\TokenGuard
获取认证信息TokenGuard
看守器
Bearer Authentication
请求头中获取Token
信息laravel_token
,即 bearerToken > passport::cookie
passport
方法
tokensExpireIn
refreshTokensExpireIn
oauth/token
路由请求中指定操作类型为 refresh_token
来刷新令牌client_id,
与client_secret
auth:api
中间件CheckClientCredentials
中间件,通常别名为clientpassport
流程
passport:client --personal
HasApiTokens Trait
$user->createToken('Users')->accessToken
AuthServiceProvider
的 boot 方法中调用Passport::enableImplicitGrant();
access_token
的原因是不会把它们发送到服务器Passport::tokensCan
定义 API 认证的令牌作用域,AuthServiceProvider
之boot方法$routeMiddleware
属性中引入两个中间件
'scopes' => \Laravel\Passport\Http\Middleware\CheckScopes::class
,'scope' => \Laravel\Passport\Http\Middleware\CheckForAnyScope::class
,scopes
用于检查传入令牌作用域是否包含所有指定中间件参数, 全选scope
用于检查传入令牌作用域是否包含任意指定中间件参数,中间件参数不定项选择$user->tokenCan('all-user-info')
形式