在没有have和admin角色的woocommerce中检查用户订阅
woocommerce-subscriptions-check的Python项目详细描述
Woomerce订阅检查器
Current version | 1.0 |
Project site | https://github.com/cr0hn/woocommerce-subscription-check |
Issues | https://github.com/cr0hn/woocommerce-subscription-check/issues/ |
Python versions | 3.6 or above |
动机
woomerce不允许在没有管理员身份的情况下从wordpress api检查用户订阅(或任何其他数据)。
这意味着,如果普通用户想要检查他们的订阅、产品或其他内容,那么它必须是管理员角色。而且,在不安全的情况下,这不是一个好主意,即:在浏览器中通过javascript
那个项目是做什么的?
此项目公开非特权API,并允许普通用户检查其订阅,而无需具有管理员角色。
要求
必须在wordpress中安装插件:
- wp-api的jwt身份验证
- wp rest api
- 禁用rest api并要求jwt(推荐)
重要
小心jwt插件。确保按照相同的顺序执行这些步骤:
1-添加到wp config.php
在wp-config.php中添加以下行:
define('jwt_auth_secret_key','your top secrect key'); define('jwt_auth_cors_enable',true);
在auth密钥、secure auth密钥的定义之前添加这些行是更重要的…(https://github.com/Tmeister/wp-api-jwt-auth/issues/59)
2-激活插件
添加步骤1中的数据后,激活插件。
环境变量
- 收听地址(默认:127.0.0.1)
- 侦听端口(默认值:9000)
- API_前缀(默认:v1)
- 日志级别(默认值:1)
- 哨兵DSN(默认:无)
- redis_主机(默认:127.0.0.1)
- redis_端口(默认值:6379)
- redis_db(默认值:1)
- 方案(默认:https)
- 域:强制
- 管理员角色用户:必需
- 管理员角色密码:必需
使用Docker
> docker run -p 9000:9000 --rm cr0hn/woocommerce-subscription-check
使用pypi
> python3.6 -m pip install woocommerce_subscriptions_check
使用岗哨支架安装:
> python3.6 -m pip install woocommerce_subscriptions_check[sentry]
终点
/api/v1/登录
常规
- 方法:post
- 以json形式输入数据
- 输入值:用户/密码
示例请求
> curl -v -X POST http://127.0.0.1:9000/api/v1/login -d '{"user": "MyUser", "password": "MyPassword"}'
示例响应
验证完成
- http状态:200
- 回复:
{"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI19s82.eyJpc3MiOiJodHRwczpcL1wvd2hvaXNsZWF2aW5nLmNvbSIsImlhdCI6MTUyMzQ0ODQxMSwibmJmIjoxNTIzNDQ4NDExLCJleHAiOjE1MjQwNTMyMTEsImRhdGEiOnsidXNlciI6eyJpZCI6IjIifX19.bu8ChmreEqDt5wwACSB5L_-8V9hHPRzJI-zGHB1Unv4"}
身份验证失败
- http状态:403
- 回复:
{"message":"Invalid user or password"}
无效数据
- http状态:400
- 响应:“无效的json”
/API/v1/订阅
常规
- 方法:get
- 输入值:用户/密码
示例请求
> curl -v -X POST http://127.0.0.1:9000/api/v1/subscriptions -H 'Authorization: Bearer TOKEN_FROM_LOGIN'
示例响应
user有订阅
- http状态:200
- 回复:
{"subscriptionName":"micro","subscriptionStatus":"active","expireDate":"2018-05-10T16:17:31"}
用户没有订阅
- http状态:200
- 回复:
{"subscriptionName":null,"subscriptionStatus":null,"expireDate":null}
身份验证失败
- http状态:403
- 回复:
{"message":"Invalid token. You must authenticate first"}
无效数据
- http状态:400
- 响应:“无效的json”