mikemclin / passport-custom-request-grant
Laravel Passport 的自定义请求授权
1.0.1
2017-11-27 12:45 UTC
Requires
- laravel/passport: ^2.0
This package is not auto-updated.
Last update: 2024-09-23 13:26:37 UTC
README
使用 composer 安装... composer require mikemclin/passport-custom-request-grant
版本
- Laravel 5.4 - 使用版本
^1.0
- Laravel 5.3 - 使用版本
^0.1
设置
- 将
MikeMcLin\Passport\CustomRequestGrantProvider
添加到 providers 列表中,必须在Laravel\Passport\PassportServiceProvider
之后。 - 将
byPassportCustomRequest($request)
方法添加到您的User
模型(或您配置与 Passport 一起工作的任何模型)中。- 该方法应接受一个
Illuminate\Http\Request
对象。 - 您应该根据此请求进行授权和检索用户
- 如果发现请求满足您的需求,则返回用户模型。
- 如果请求未满足您的需求,则返回
null
- 该方法应接受一个
如何使用
- 向
https://your-site.com/oauth/token
发送一个 POST 请求,就像使用 密码 或 刷新 授权一样。 - POST 主体应包含
grant_type
=custom_request
。 - 请求将被路由到您的
User::byPassportCustomRequest()
函数,您将在其中确定是否授权访问。 - 如果成功,将返回
access_token
和refresh_token
。
示例
以下是 User::byPassportCustomRequest()
方法的示例...
/** * Verify and retrieve user by custom token request. * * @param \Illuminate\Http\Request $request * * @return \Illuminate\Database\Eloquent\Model|null * @throws \League\OAuth2\Server\Exception\OAuthServerException */ public function byPassportCustomRequest(Request $request) { try { if ($request->get('sso_token')) { return $this->bySsoToken($request->get('sso_token')); } } catch (\Exception $e) { throw OAuthServerException::accessDenied($e->getMessage()); } return null; }
在这个例子中,应用能够根据提交的 JSON 有效负载中的 sso_token
属性验证用户。这个应用使用 bySsoToken
来做这件事。它将返回 null
或用户对象。它还可能抛出异常来解释为什么令牌无效。《code>byPassportCustomRequest 捕获这些异常并将它们转换为适当的 OAuth 异常类型。如果请求有效负载中不存在 ssoToken
,则我们返回 null
,这将返回一个 无效凭证 错误响应
{ "error": "invalid_credentials", "message": "The user credentials were incorrect." }