我正计划将Laravel Passport System用于ANGULAR 6 API。根据文档安装。
但是我有点困惑。请尝试解决它。
1。如何提供令牌?
这是正确的方法吗?
https://stackoverflow.com/questions/54201827/how-to-use-laravel-passport-access-tokens
或编码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的刷新令牌系统?
像刷新(鼠标按钮刷新)一样需要调用Laravel API?应该如何?请详细说明Laravel和Angular代码。
请详细回答这个问题。寻找一个好的答案!!
如何提供令牌?这是正确的方法吗?或编码类似是正确的方法?
它使用不同的赠款。正确的方法取决于您的应用程序需求。在实施OAuth之前,您需要了解授权类型:
如果您曾经使用Facebook或Google帐户登录过应用程序,则授权码授予应该非常熟悉。
隐式授予类似于授权码授予,但有两个不同之处。
旨在用于基于用户代理的客户端(例如单页Web应用程序),这些客户端由于易于访问所有应用程序代码和存储而无法保持客户端的机密。
第二次代替授权服务器返回交换访问令牌的授权代码,授权服务器返回访问令牌
此赠款对于Web和本机设备应用程序中的受信任的第一方客户端都是很好的用户体验。
是所有OAuth 2.0授予中最简单的授予,该授予适用于不需要特定用户访问数据权限的机器对机器身份验证。
访问令牌最终会过期;但是,某些授予以刷新令牌作为响应,该刷新令牌使客户端可以获取新的访问令牌,而无需重定向用户。
授权是一种获取访问令牌的方法。确定要实施的补助金取决于最终用户将使用的客户端类型以及用户想要的体验。
如何处理Angular的刷新令牌系统?
访问令牌最终会过期;客户端向/oauth/token
发送带有以下主体参数的POST请求:
grant_type
的值为refresh_token
refresh_token
with the client's IDclient_id
带有客户的机密client_secret
,以空格分隔的请求范围权限列表。 这是可选的;如果未发送,则将使用原始范围,否则,您可以请求缩小的范围集。scope
或者您可以使用Angular $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);
刷新令牌。 HTTP拦截器用于添加用于记录日志,修改响应,错误处理的自定义逻辑,但是一种常见情况是自动将身份验证信息附加到请求并刷新令牌,以保持用户会话的活动状态。
Ref:
HTTPInterceptor