当Laravel作为客户端时,用于身份验证的JWT存放在哪里?
Where to store the JWT for authentication when Laravel is used as client?
我使用 Laravel 6 和 GuzzleHTTP 7。
我可以设法向外部 (REST-) 发出请求 API 并成功授权并取回令牌:
{"access_token":"FooXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2MjExNjkyNDQsImlhdCI6MTYxODU3aNzI0NCwibmJmIjoxNjE4NTc3MjQ0LCJpZGVudGl0eSI6MTQzfQ.wdDzVbE-5O8mfsIqzNvXFpv7THkYYp522HMpyEc8LX0BAR"}
我是否必须在会话中显式保存此令牌?
我正在尝试在对外部 API.
的每个后续请求中使用此令牌
通过谷歌搜索,我只找到了 Laravel 如何生成 JWT 的教程,但没有找到 Laravel 用作客户端并请求 JWT 时如何继续的教程。
非常感谢任何帮助!
更新:Laravel 应用程序本身就是客户端(无论“内部”用户是什么Laravel)。
从第 3 方服务获取令牌后,将其存储在某种形式的存储中(例如文件、数据库、缓存)。我建议使用缓存,因为它更快(如果您使用像 Redis 这样的内存缓存),并且您可以设置 TTL。
如果令牌在一段时间后过期,并且没有刷新令牌,则将 TTL 设置为 date/time。
示例:
$ttl = Carbon::now()->addHour(); // set to when it expires or null if token doesn't expire
$jwtToken = Cache::remember('fooServiceJwtToken', $ttl, function () {
$jwt = getJwtTokenUsingGuzzle(); // CHANGE
return $jwt;
});
不要将数据存储在会话中,因为会话与使用您的应用程序的用户相关联。
我使用 Laravel 6 和 GuzzleHTTP 7。
我可以设法向外部 (REST-) 发出请求 API 并成功授权并取回令牌:
{"access_token":"FooXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2MjExNjkyNDQsImlhdCI6MTYxODU3aNzI0NCwibmJmIjoxNjE4NTc3MjQ0LCJpZGVudGl0eSI6MTQzfQ.wdDzVbE-5O8mfsIqzNvXFpv7THkYYp522HMpyEc8LX0BAR"}
我是否必须在会话中显式保存此令牌? 我正在尝试在对外部 API.
的每个后续请求中使用此令牌通过谷歌搜索,我只找到了 Laravel 如何生成 JWT 的教程,但没有找到 Laravel 用作客户端并请求 JWT 时如何继续的教程。
非常感谢任何帮助!
更新:Laravel 应用程序本身就是客户端(无论“内部”用户是什么Laravel)。
从第 3 方服务获取令牌后,将其存储在某种形式的存储中(例如文件、数据库、缓存)。我建议使用缓存,因为它更快(如果您使用像 Redis 这样的内存缓存),并且您可以设置 TTL。
如果令牌在一段时间后过期,并且没有刷新令牌,则将 TTL 设置为 date/time。
示例:
$ttl = Carbon::now()->addHour(); // set to when it expires or null if token doesn't expire
$jwtToken = Cache::remember('fooServiceJwtToken', $ttl, function () {
$jwt = getJwtTokenUsingGuzzle(); // CHANGE
return $jwt;
});
不要将数据存储在会话中,因为会话与使用您的应用程序的用户相关联。