如何使用 Laravel 护照令牌系统

How to Use Laravel Passport Token System

我打算为 ANGULAR 6 API 使用 Laravel 护照系统。按照文档安装。

但我有点困惑。请尝试解决。

1.如何提供令牌?

这是正确的方法吗?


或 编码 LIKE 是正确的方法 ?:

$request->request->add([
            'username' => $request->email,
            'grant_type' => 'password',
            'client_id' => env('PASSWORD_CLIENT_ID'),
            'client_secret' => env('PASSWORD_CLIENT_SECRET'),
            'scope' => '',
]);
// forward the request to the OAuth token request endpoint and Return Token

$res = Route::dispatch(request()->create('oauth/token', 'POST', $this->loginCredentials($request)));
$this->api_response = json_decode($res->getContent());
return response()->json(['token' => $this->api_response,'usersDetail' =>  $user], 200);

需要使用哪种方法,为什么请详细说明。?

2。如何处理 Angular?

的刷新令牌系统

点赞在刷新(鼠标键刷新)需要调用LaravelAPI?应该如何?请详细说明 Laravel 和 Angular 代码。

请详细回答这个问题。寻找好的答案!!!

How to provide a token ? This is the Correct Method? OR Coding LIKE is correct Method ?

它使用不同的赠款。正确的方法是根据您的应用需求。在实施 OAuth 之前,您需要了解授权类型:

授权码授予

如果您曾经使用 Facebook 或 Google 帐户登录过应用程序,那么授权码授予应该非常熟悉。

隐式授权

隐式授予类似于授权码授予,但有两个明显的区别。

它旨在用于无法保密的 user-agent-based 客户端(例如单页 Web 应用程序),因为所有应用程序代码和存储都可以轻松访问。

其次,不是授权服务器返回用于交换访问令牌的授权代码,而是授权服务器 returns 访问令牌

资源所有者凭据授予

对于 Web 和本机设备应用程序中受信任的第一方客户来说,这项资助是一种很好的用户体验。

客户端凭据授予

所有 OAuth 2.0 授权中最简单的一种,此授权适用于 machine-to-machine 不需要特定用户访问数据的权限的身份验证。

刷新令牌授予

访问令牌最终会过期;然而,一些授权以刷新令牌响应,使客户端无需重定向用户即可获得新的访问令牌。


我应该使用哪种 OAuth 2.0 授权?

授权是一种获取访问令牌的方法。决定实施哪些授权取决于最终用户将使用的客户端类型,以及您希望为用户提供的体验。


How to handle Refresh Token System for Angular?

访问令牌最终会过期;客户端向 /oauth/token:

发送带有以下正文参数的 POST 请求
  • grant_type 值为 refresh_token
  • refresh_token 刷新令牌
  • client_id 客户ID
  • client_secret 与客户的秘密
  • scope 和 space-delimited 请求范围权限列表。 这是可选的;如果未发送,将使用原始范围,否则您可以请求缩小的范围集.
$http = new GuzzleHttp\Client;

$response = $http->post('http://your-app.com/oauth/token', [
    'form_params' => [
        'grant_type' => 'refresh_token',
        'refresh_token' => 'the-refresh-token',
        'client_id' => 'client-id',
        'client_secret' => 'client-secret',
        'scope' => '',
    ],
]);

return json_decode((string) $response->getBody(), true);

或者您可以使用 Angular HTTPInterceptor 来刷新令牌。 HTTP 拦截器用于为日志记录、修改响应、错误处理添加自定义逻辑,但一种常见情况是自动将身份验证信息附加到请求并刷新令牌以保持用户会话处于活动状态。


参考: