如何使用 Laravel Passport 令牌系统

ABH*_*K.M 3 php token oauth-2.0 laravel laravel-passport

我计划将 Laravel Passport System 用于 ANGULAR 6 API。按照文档安装。

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

1. 如何提供代币?

这是正确的方法吗?

/sf/ask/3794127921/
Run Code Online (Sandbox Code Playgroud)

OR 编码 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);
Run Code Online (Sandbox Code Playgroud)

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

2. 如何处理 Angular 的刷新令牌系统?

就像刷新(鼠标按钮刷新)需要调用Laravel API?应该如何?请用 Laravel 和 Angular 代码详细说明。

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

Wah*_*nto 5

\n

如何提供令牌?\n 这是正确的方法吗?\n 或者编码 LIKE 是正确的方法?

\n
\n\n

它使用不同的补助金。正确的方法取决于您的应用需求。在实施 OAuth 之前,您需要了解授权类型:

\n\n

授权码授予

\n\n

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

\n\n

隐性授予

\n\n

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

\n\n

它旨在用于基于用户代理的客户端(例如单页 Web 应用程序),这些客户端可以\xe2\x80\x99t 保守客户端机密,因为所有应用程序代码和存储都可以轻松访问。

\n\n

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

\n\n

资源所有者凭证授予

\n\n

对于网络上和本机设备应用程序中受信任的第一方客户端来说,这项资助都带来了良好的用户体验。

\n\n

客户凭证授予

\n\n

这是所有 OAuth 2.0 授权中最简单的一种,适用于不需要特定用户\xe2\x80\x99s 访问数据的权限的机器对机器身份验证。

\n\n

刷新令牌授予

\n\n

访问令牌最终会过期;然而,有些授权会使用刷新令牌进行响应,这使客户端能够获取新的访问令牌,而无需重定向用户。

\n\n
\n\n

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

\n\n

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

\n\n

\n\n
\n\n
\n

如何处理 Angular 的刷新令牌系统?

\n
\n\n

访问令牌最终会过期;客户端将带有以下正文参数的 POST 请求发送到/oauth/token

\n\n
    \n
  • grant_type与价值refresh_token
  • \n
  • refresh_token使用刷新令牌
  • \n
  • client_id与 client\xe2\x80\x99s ID
  • \n
  • client_secret与 client\xe2\x80\x99s 秘密
  • \n
  • scope带有空格分隔的请求范围权限列表。这是可选的;如果未发送,将使用原始范围,否则您可以请求一组减少的范围
  • \n
\n\n
$http = new GuzzleHttp\\Client;\n\n$response = $http->post(\'http://your-app.com/oauth/token\', [\n    \'form_params\' => [\n        \'grant_type\' => \'refresh_token\',\n        \'refresh_token\' => \'the-refresh-token\',\n        \'client_id\' => \'client-id\',\n        \'client_secret\' => \'client-secret\',\n        \'scope\' => \'\',\n    ],\n]);\n\nreturn json_decode((string) $response->getBody(), true);\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
\n\n

参考:

\n\n\n