想做一个API管理平台的功能 (功能类似于 新浪微博的openAPI 功能不用跟微博openAPI的那么强大)
调用接口需要授权 授权之后 使用方拿到 用户名 token 等授权信息
使用方调用接口 参数包含: 用户名 token或者签名儿 等接口参数
可以设置token的过期时间和token调用次数限制
可以记录每个用户的调用次数 调用记录
我的思路是:
用mysql存储用户名,签名,token,授权日期,用户权限等信息
用redis的string存储 用户的调用记录
收到使用方的请求之后 根据token验证这个调用是否合法 根据用户名来验证他是不是有权限调用这个接口,是否超出次数限制,超出频次限制,等信息
1.既然是Api管理平台你应该有个api表,你的描述上都没提及这个点。其实说api表的话会有点奇怪,我可能会在建一张Services表(服务),一个服务可能提供多个api。
2.授权这块可以参考微信、新浪这些第三方平台开发,注册用户的时候为其分发APPKEY与APPSECRECT(这里的想法是一套设置使用全部服务),用户使用这两个去获取权限判断所要的access_token参数
3.参数大概就这些,参数带的方式的话用GET或者放在header头里面传,https://github.com/firebase/php-jwt 网上比较流行的JWT认证,一个对PHP JSON 网络令牌编解码的库。
4.token的次数与时间设置可以使用你下面提及到的redis机制,感觉不用存表。
5.调用次数,调用记录的话用redis是正确的,可以参考下hash结构
以上,是一些个人的理解,欢迎大家一起讨论。