Magento 2 rest API-如何在移动设备应用程序上管理API身份验证生命周期?


9

在Magento [2.2.4] Web API中,当我传递用户名密码时,它将为该特定客户生成令牌(仅有效1小时-可从Magento管理员配置)

http://magento.host/index.php/rest/V1/integration/customer/token?username=test.user@test.com&password=test@123

返回令牌。

生成令牌后,当我们在标头中传递该令牌时。

授权::承载*令牌值*

http://magento.host/index.php/rest/V1/customers/me

返回客户详细信息。

我说明上述情况下运作良好为的WebAPI其中我在测试magento2 邮差

现在的情况是

每小时重新生成令牌,然后每小时重新登录一次, 对于Mobile Application而言是不合逻辑的。

然后,如果根据服务合同开发了API,Magento如何在移动应用程序中管理用户登录数据和身份验证

  • 多久我应该让我的访问令牌存在它在移动应用到期前?
    • 我不想强迫我的用户每小时在Mobile Application中重新进行身份验证
    • 如何为移动应用程序正确管理OAuth2 API令牌生命周期。

更改访问令牌的生存时间不是逻辑上的解决方案,因为应用程序和Web应具有不同的令牌生存时间

在此处输入图片说明


您是否尝试过从存储->配置->服务-> OAuth->客户令牌生存期(小时)-来延长令牌生存期?
Manthan Dave

否,请通过将客户令牌有效期(小时)设为空白值来进行检查-如果该值为空,则将禁用该功能。因此可能有效。
阿迪亚莎(Aditya Shah)

这不是因为当我们清空客户令牌生存时间的值时,它将重新生成每个请求的令牌,并且所有数据都不会过期(每个请求数据),并将其存储在oauth_token中
Aditya Shah,

如果您可以访问要连接的商店的代码,或者可以为应用程序编写一个magento模块,则一种解决方案是在使用客户令牌时,每次请求都更新令牌有效日期,类似于完成会话。然后,直到您的应用在令牌有效期内提出任何请求,客户才不会被迫重新授权。
Zefiryn

但根据哪个标记,我们认为使用了客户令牌。
Aditya Shah

Answers:


3

为了检查有效的客户令牌,Magento检查两个条件

  1. 令牌被吊销(用户注销时发生):吊销在oauth_token表中另存为1
  2. 令牌实际上存在于oauth_token表中

Magento运行cron来从表(vendor\magento\module-integration\Cron\CleanExpiredTokens.php)中删除过期的令牌(根据管理员设置的生命周期)

可能的解决方案

  1. 增加管理员的令牌寿命
  2. 覆盖上述cron以仅删除已撤销的令牌,即注销的客户令牌

希望这能回答您的问题


我觉得您在谈论用户角色?像管理员...也请接受答案
Vishwas Bhatnagar

不,我说的是后端的移动应用程序中使用的M2身份验证,因为每小时重新生成令牌,然后每小时再次登录对于移动应用程序来说是不合逻辑的。仅在用户更改密码时才进行一次身份验证(这样的活动)
Aditya Shah,

我想我已经为我上面的答案提出了一个解决方案,我们正在使用相同的解决方案,并且为我们完美地工作
Vishwas Bhatnagar

1
谢啦!!我进行了很多搜索,但除了您之外没有找到任何解决方案:)
Aditya Shah
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.