web-services - 通过 web 服务登录 prestashop 1.7
问题描述
Prestashop 菜鸟在这里。我正在使用 prestashop 1.7 创建一个离子应用程序。
TL;博士:
我不能使用与 Prestashop 1.7 相同的加密来将应用程序用户密码与数据库中的加密密码进行比较
细节:
所以 prestashop 没有提供正确的登录方式(文档中甚至没有提到登录词)。我正在考虑使用输入的电子邮件(api/customers/?filter[email]=INPUT_EMAIL)获取客户,然后加密使用来自 api 的“passwd”属性加密的 INPUT_PASSWORD。问题是我无法应用与 Prestashop 相同的加密(即使密码正确,它们也永远不会匹配)
PS:
我试过md5(COOKIE_KEY+INPUT_PASSWORD)
了,但仍然不是正确的
解决方案
有点晚了,但我相信其他人会面对这个。我所做的与问题中提到的相同程序:获取客户信息并匹配密码。Prestashop 1.6 显然使用 md5 但 PS 1.7 使用 bcrypt,所以你必须:
获取 bcryptjs 包(我使用的是 angular,nodejs 有 bcrypt 包)。
更改替换$2y$
为$2a$
(PHP 的 bcrypt 使用的第一个,Javascript 的第二个)。
将哈希值与键入的密码进行比较bcrypt.compare(INPUT_PASSWORD, pwd)
如果它们匹配,则从那里开始调整您的应用程序以使其按需要运行。
推荐阅读
- 1password - 在 gopass 中保存环境变量
- python - python - 如何获取分层类名
- python - Django None 参数函数问题
- r - 数据框列表中每个数据框的列方差系数
- python - f2py 错误:导入模块时未定义符号
- python - 手动尝试拍照不起作用
- python - 使用 SQLAlchemy 获取子对象
- javascript - 如何让 Ajax 表单在 asp.net 核心中工作
- java - 相同的 MergeSort 实现在 C 中运行良好,但在 Java 中需要很多时间
- python - PyCharm Professional 无法识别 .ipynb 文件