gpt4 book ai didi

Laravel - 如果在另一项服务中验证登录,如何在一项服务中进行 token 身份验证?

转载 作者:行者123 更新时间:2023-12-05 06:58:09 24 4
gpt4 key购买 nike

我有两个 API。一个包括有关用户的所有信息,例如注册和登录功能。另一个拥有关于组织的所有信息,包括搜索和请求添加这些组织的图像、视频和文档。在两个单独的 API 中实现这一点的原因是用户 API 具有更大的可扩展性,因为它更有可能拥有比组织 API 中的组织数量更多的用户,但如果它们都显着增长,它可能在同一个 API 中包含所有这些信息是一个问题。

我正在使用 Laravel 开发这些 API 的后端。

我需要使用在用户 API 中注册并使用 token 进行身份验证的帐户来在组织 API 中进行搜索,只有经过身份验证的用户才能进行搜索,我该如何连接这些 API?

如何获取在用户 API 中创建的用户 token 并在组织 API 中使用它?

想法我想创建一个表,其中包含要保存在组织 API 中的 token 的 ID、 token 和到期日期。因此,当用户登录时, token 将传递给组织 API,然后在需要时可以访问 token 。行得通吗?如何实现?

最佳答案

发布一组 key ,如 api-key 和 salt-key,您的 api-key 将充当用户识别 key (类似于用户名),您的模块通过使用 salt 加密发送的数据来生成签名。

在您的服务上 1

  • 按特定顺序对数据进行排序
  • 用Salt key加密全部数据生成签名。
  • 发布原始文件和签名(无盐 key )

示例代码:

$data['name']  = 'xxx';
$data['mail'] = 'yyy';
$data['age'] = 'zzz';

//sort the data in some order
ksort($data);

//create a piped delimited raw signature with the data
$raw_data = '';
foreach($data as $key => $value)
{
$raw_data = $raw_data .'|'. $value ;
}

$decrypted = $newEncrypter->decrypt( $data);
$newEncrypter = new \Illuminate\Encryption\Encrypter('salt-key');
$data['signature'] = $newEncrypter->encrypt( $data);

关于您的服务 2

  • 接收数据
  • 消除签名
  • 按相同顺序对数据进行排序
  • 用盐 key 重新加密它(你需要从 db 或 .env 中获取它)
  • 验证接收和生成的签名是否同步。示例代码:
//we will grab the signature as received_signature to compare later and would unset from the data.
$compare['received_signature'] = $request->input('signature');
$data = $request->input();
unset($data['signature');

//sort the data in some order
ksort($data);

//create a piped delimited raw signature with the data
$raw_data = '';
foreach($data as $key => $value)
{
$raw_data = $raw_data .'|'. $value ;
}

$newEncrypter = new \Illuminate\Encryption\Encrypter('salt-key');
$compare['generated_signature'] = $newEncrypter->encrypt( $data);

if($compare['generated_signature'] != $compare['received_signature'])
{
//take some action like opening ticket or email notification
die();
}

结果如果签名同步,你就可以开始了,如果不同步,你可能需要忽略它。

关于Laravel - 如果在另一项服务中验证登录,如何在一项服务中进行 token 身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64705266/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com