Laravel 护照刷新令牌

     2023-03-14     237

关键词:

【中文标题】Laravel 护照刷新令牌【英文标题】:Laravel passport refresh token 【发布时间】:2019-05-15 10:18:56 【问题描述】:

我正在使用 Laravel 5.5 版,使用 Passport 进行身份验证。 我已成功创建令牌并可以使用auth:api 中间件访问它。

但每当用户登录系统时,它都会为该用户创建新令牌。我只想刷新用户最后一个令牌并将其发回,而不是创建一个新令牌。

我已使用以下代码生成身份验证令牌

$token = $user->createToken('string-'.$user->id)->accessToken;

它生成 1075 个字符的令牌,但是当我检查数据库表 oauth_access_tokens 时,它向我显示了 80 个字符的令牌。

如何使用 80 个字符的令牌获取最后生成的令牌并刷新它并将其发回?

提前致谢

【问题讨论】:

【参考方案1】:

如果您的应用程序发出短期访问令牌,用户将需要通过在发出访问令牌时提供给他们的刷新令牌来刷新他们的访问令牌。在本例中,我们将使用 Guzzle HTTP 库来刷新令牌:

$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);

这个/oauth/token 路由将返回一个包含access_token、refresh_tokenexpires_in 属性的JSON 响应。 expires_in 属性包含访问令牌过期前的秒数。

【讨论】:

感谢您的快速回复。您能否准确解释一下我需要在form_params 中传递哪些值? @AkshayDeshmukh 您必须发送旧的刷新令牌 ('refresh_token' => 'the-refresh-token',),此代码会生成一个新令牌并刷新刷新【参考方案2】:

我做过类似的事情。

为授予刷新令牌创建了一个端点。 在我的控制器中,

public function userRefreshToken(Request $request)

$client = DB::table('oauth_clients')
    ->where('password_client', true)
    ->first();

$data = [
    'grant_type' => 'refresh_token',
    'refresh_token' => $request->refresh_token,
    'client_id' => $client->id,
    'client_secret' => $client->secret,
    'scope' => ''
];
$request = Request::create('/oauth/token', 'POST', $data);
$content = json_decode(app()->handle($request)->getContent());

return response()->json([
    'error' => false,
    'data' => [
        'meta' => [
            'token' => $content->access_token,
            'refresh_token' => $content->refresh_token,
            'type' => 'Bearer'
        ]
    ]
], Response::HTTP_OK);

【讨论】:

在护照 laravel 中刷新令牌时出现 TokenMismatchException

】在护照laravel中刷新令牌时出现TokenMismatchException【英文标题】:TokenMismatchExceptionwhenrefreshingtokeninpassportlaravel【发布时间】:2017-09-1315:20:59【问题描述】:我最近关注了有关如何在演示应用程序中正确安装和设置LaravelPassport的官... 查看详情

用于生成的 Laravel 护照令牌

】用于生成的Laravel护照令牌【英文标题】:LaravelPassportTokenforGeneration【发布时间】:2020-02-0423:11:11【问题描述】:第一次尝试护照令牌系统。通过URL:http://localhost:8000/oauth/token,可以获得访问令牌和刷新令牌。但是,无法在larav... 查看详情

护照密码授予令牌刷新

...7-04-0920:00:36【问题描述】:我执行此问题中描述的步骤:Laravel\'s5.3passportandapiroutes从api的路由一切正常,我可以注册新用户,读取他们的数据等。然后在AuthServiceProvider上添加这个命令Passport::tokensExpireIn(Carbon 查看详情

Laravel 护照延长访问令牌过期时间

】Laravel护照延长访问令牌过期时间【英文标题】:Laravelpassportextendaccesstoken\'sexpirationtime【发布时间】:2021-01-1411:56:17【问题描述】:我曾经在我的PHP项目中使用纯jwt库。为了扩展用户的令牌,我使用了刷新令牌。Laravel的passport... 查看详情

Laravel 护照 api/用户路由未经授权

】Laravel护照api/用户路由未经授权【英文标题】:Laravelpassportapi/userrouteisunauthorized【发布时间】:2019-01-0509:39:29【问题描述】:我使用laravel护照进行令牌认证,并使用axios从vuejs前端发送请求。我可以使用oauth/tokenurl成功登录,它... 查看详情

刷新令牌被 Laravel Passport 中的访问令牌撤销

】刷新令牌被LaravelPassport中的访问令牌撤销【英文标题】:RefreshTokengetsrevokedwithAccessTokeninLaravelPassport【发布时间】:2018-04-2307:01:40【问题描述】:我正在使用laravel/passportpassword_grant进行身份验证。整个生成access_token和refresh_token... 查看详情

Laravel 护照授权令牌在生成新令牌时过期

】Laravel护照授权令牌在生成新令牌时过期【英文标题】:LaravelpassportAuthorizationtokenexpireongeneratingnewtoken【发布时间】:2018-04-1108:21:40【问题描述】:我正在使用laravel5.5和API路由的护照身份验证。我正在使用不记名令牌。问题是... 查看详情

如何使用 Chrome 扩展程序获取 Laravel 护照令牌?

】如何使用Chrome扩展程序获取Laravel护照令牌?【英文标题】:HowtouseChromeextensiongetLaravelpassporttoken?【发布时间】:2019-11-2918:48:51【问题描述】:我正在使用Chrome扩展访问Laravel护照API。目前,Laravel护照API已设置并正在运行。我尝... 查看详情

如何使用 laravel 护照自定义访问令牌

】如何使用laravel护照自定义访问令牌【英文标题】:Howtocustomizetheaccesstokenusinglaravelpassport【发布时间】:2021-12-0311:44:28【问题描述】:我们可以自定义访问令牌吗,我已经使用laravel护照实现了一个OAuth服务器,我需要将我的访... 查看详情

Laravel 护照 Oauth2 “请求令牌”

】Laravel护照Oauth2“请求令牌”【英文标题】:LaravelpassportOauth2"RequestingTokens"【发布时间】:2019-09-1318:37:15【问题描述】:我正在使用Zapier,并尝试使用OAuth2对用户进行身份验证。我正在使用Laravel(5.5)Passport(^4.0)。我正在... 查看详情

如何从 Laravel Passport 中的刷新令牌中获取 id?

】如何从LaravelPassport中的刷新令牌中获取id?【英文标题】:HowtogetidfromrefreshtokeninLaravelPassport?【发布时间】:2020-12-1506:24:49【问题描述】:我正在编写一个控制器,我想在其中获取刷新令牌ID,但我无法弄清楚如何在laravel中进... 查看详情

Laravel 护照从数据库中获取令牌

】Laravel护照从数据库中获取令牌【英文标题】:Laravelpassportgettokenfromdatabase【发布时间】:2019-05-1516:56:08【问题描述】:我正在使用Laravel5.5版并使用Passport进行身份验证。我使用以下方法创建了令牌:$token=$user->createToken(\'strin... 查看详情

在内部生成 laravel 护照令牌。 401错误未经授权

】在内部生成laravel护照令牌。401错误未经授权【英文标题】:Generatelaravelpassporttokensinternally.401errorunauthorized【发布时间】:2019-05-1213:46:02【问题描述】:我正在尝试为护照创建一个不记名令牌,以便我可以在内部使用我的api路... 查看详情

laravel 护照模块中个人访问令牌的过期时间

】laravel护照模块中个人访问令牌的过期时间【英文标题】:Expiretimeforpersonalaccesstokeninlaravelpassportmodule【发布时间】:2019-06-2205:02:56【问题描述】:我正在使用laravel为应用程序提供API服务。我使用个人访问令牌为用户进行API访问... 查看详情

使用护照Laravel创建令牌时出现异常

】使用护照Laravel创建令牌时出现异常【英文标题】:GettingexceptionwhilecreateTokenusingpassportLaravel【发布时间】:2021-03-0800:32:21【问题描述】:直到昨天一切正常。但是今天通过api登录时,我在创建令牌时遇到了异常。例外是:不推... 查看详情

laravel 5.3 护照和角度存储访问令牌

】laravel5.3护照和角度存储访问令牌【英文标题】:laravel5.3passportandangularstoringaccesstokens【发布时间】:2017-03-2216:56:56【问题描述】:我正在对用户进行身份验证以使用我自己的API(因此是受信任的来源)。我正在努力确定的是在... 查看详情

Laravel 通过生成的令牌进行身份验证,无需护照和 jwt

】Laravel通过生成的令牌进行身份验证,无需护照和jwt【英文标题】:Laravelauthbygeneratedtokenwithoutpassportandjwt【发布时间】:2018-05-2810:12:09【问题描述】:我正在尝试通过在laravel5.5中使用md5加密方法从登录用户的用户名中检查生成... 查看详情

如何在节点/套接字应用程序中验证 laravel 护照 API 令牌?

】如何在节点/套接字应用程序中验证laravel护照API令牌?【英文标题】:Howtoverifylaravelpassportapitokeninnode/socketapplication?【发布时间】:2018-10-2602:36:09【问题描述】:我的问题是关于laravel应用程序中的OAuth护照令牌,它也使用套接... 查看详情