使用 Laravel 7.x 的 Passport 来为 REST API 提供一个完整的 OAuth2 认证服务,第三部分
这一节我们来尝试实现刷新令牌
In this part we want to implement the refresh token
步骤1.修改 api.php
我们需要像这样添加刷新令牌路由
<?php
use Illuminate\Support\Facades\Route;
Route::post('login', 'UserController@login');
Route::post('register', 'UserController@register');
Route::post('refreshtoken', 'UserController@refreshToken');
Route::get('/unauthorized', 'UserController@unauthorized');
Route::group(['middleware' => ['CheckClientCredentials','auth:api']], function() {
Route::post('logout', 'UserController@logout');
Route::post('details', 'UserController@details');
});
步骤2.在UserController.php中添加refreshToken函数
我们使用refreshToken向“oauth/token”发送请求,并提供访问令牌和新的刷新令牌
...
public function refreshToken(Request $request) {
$refresh_token = $request->header('Refreshtoken');
$oClient = OClient::where('password_client', 1)->first();
$http = new Client;
try {
$response = $http->request('POST', 'http://mylemp-nginx/oauth/token', [
'form_params' => [
'grant_type' => 'refresh_token',
'refresh_token' => $refresh_token,
'client_id' => $oClient->id,
'client_secret' => $oClient->secret,
'scope' => '*',
],
]);
return json_decode((string) $response->getBody(), true);
} catch (Exception $e) {
return response()->json("unauthorized", 401);
}
}
...
如上所述
现在你就实现了api auth啦 :)
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
很好的翻译,解决了懒得看的原文,我就知道有翻译哈哈。
谢谢