我想用laravel做个api接口,但是作为接口,应该对请求做校验,我能想到将校验的数据放到header中,在laravel的中间件对header做校验,但是我现在不知道拿到header怎么去用。
还有就是做api对请求校验的作用,重要性
我想用laravel做个api接口,但是作为接口,应该对请求做校验,我能想到将校验的数据放到header中,在laravel的中间件对header做校验,但是我现在不知道拿到header怎么去用。
还有就是做api对请求校验的作用,重要性
2 回答3.1k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
1 回答1k 阅读✓ 已解决
1 回答1.3k 阅读✓ 已解决
3 回答1.2k 阅读
2 回答1.2k 阅读
1 回答1.2k 阅读
API接口的校验有很多种,看你的API是用在哪方面,APP还是web。
也不一定非要放在header中,使用基础的signature方案也能完成对接口的校验。
signature方案:客户端和API使用同一套加密规则,提供一个APPkey和secret,然后经过secret加密(或者其他处理过程)生成signature,传输的时候将signature和appkey作为参数传递。这是目前用的比较多的一种API接口调用权限校验,只是用来校验客户端是否有权限调用API。
JWT: JSON WEB TOKEN 也是一种可选的,只不过他更复杂, 更多的是用来校验用户的登录状态和权限,(用在APP、无状态的web系统),关于JWT有相对应的 composer 包可选择。核心思想就是,API加密一个uid或者其他标识,生成一个token,这个token是有时限的,比如两个小时,放在header的Authorization中,通过获取进行校验,(涉及用户的操作,一般会传递uid或者其他类似标识字段),通过JWT进行权限校验即可。
至于拿到 header 怎么用,如果是JWT 取出 Authorization字段,以及标识字段(如UID)然后进行JWT校验即可,加密和校验可以自己实现,不过建议使用成熟的composer包吧,比如我用过的:https://github.com/lcobucci/jwt。
看你到底需求什么校验 是
用户鉴权
还是API接口调用权限校验
,个人认为这两者是不同的。另外API请求校验的作用很明显,别人即使知道你的API,也无法调用。(这个无法调用是相对的,如果你的signature校验写的很死,尤其是可以多次应用的signature,就存在重放攻击)。
用户鉴权这个就更不用说了,不同的用户只能操作自己权限的东西,不鉴权的API,是存在各种问题的。