- 49
- 0
已经开发好了一套 RESTful API 接口,方便PC端和APP端调用,只进行了 session 认证,每次调用 API 都会检查当前 session 中是否存在 uid,也就是判断是否已经有用户登录了,这样可以防止未登录的用户调用API接口,但这样设计肯定有问题,所以我想用 token 方式认证,类似于 github 的 token 认证,在调用 API 时携带 token 进行认证,这样不需要用户登录也可以对用户进行鉴权认证。
想法虽然很好,但遇到了一个问题,我的这套 API 接口不仅提供给其他开发者使用,我自己网站也在使用,比如主页显示所有用户,api 为 http://api.example.com/users, 我会在前端用 fetch 请求 http://api.example.com/users,得到返回值后在主页显示所有用户信息。如果我使用 token 认证,那 http://api.example.com/users 这个 API 地址也要加上 token,但这又是网站使用,并非第三方开发者使用,那这个 token 用谁的呢,肯定不能用某个开发者的,那就只能用一个公共的 token,但一旦在PC端API请求时加上了这个公共 token,只要打开开发者工具这个 token 就人尽皆知了,也就失去了认证的意义了。
我看了 github 的做法,他的前台页面数据读取都没有使用 api 接口获取数据,而是直接返回一个页面的,包含html和css,比如读取我的 star 项目,github 请求的 url 是 https://github.com/joyran?pag...,而如果用 api 获取数据则为 https://api.github.com/users/...,api 只返回数据,而上面那个地址返回完整页面。这样用户即使知道了这个地址 https://github.com/joyran?pag...,但苦于返回的是完整页面,只能通过正则表达式或者其它方法提取出自己想要的数据,增加了难度。这种方法对于我而已一个不好的地方是要写两套接口,一个是API只返回数据,另外一个返回完整页面,但是我的前台是React + Redux 开发的,所有的数据请求都是 fetch API接口,然后更新 store 从而更新页面视图,如果fetch返回的数据是一个完整页面,我无法更新 store。
还看了下知乎的设计,改版后的知乎也是基于React + Redux开发的,前台数据的获取也是通过请求API然后更新store的,知乎的API在请求时没有认证,可以任意使用,比如 https://www.zhihu.com/api/v4/... 读取前端话题下的讨论,这种方式API就没有认证了,所有人都可以使用。
所以问题来了,知乎那样设计是不是因为你本来就可以在PC端任意浏览话题下的讨论,我没有必要限制你API访问,毕竟你不用API不用鉴权也可以看到话题下的讨论,但是知乎用这种方式很容易让它的API,而且由于API没有认证和访问限制,第三方开发者可以利用这个API开发一些知乎第三方应用了。
我的需求是自己和第三方开发者以及移动APP或者微信小程序等公用一套API接口,第三方开发者在PC端使用开发者工具分析出API接口后想要调用必须申请token才能访问,应该怎么设计,谢谢。
- 共 0 条
- 全部回答
-
相思入骨 普通会员 1楼
API 接口鉴权设计主要包括以下几点:
-
授权规则:定义需要授权的资源和操作。例如,用户需要登录才能访问某些页面,或者用户需要购买某些服务才能获取数据。
-
权限管理:实现权限管理功能,包括用户权限设置、权限申请、权限恢复等功能。
-
身份验证:采用多种身份验证方式,如用户名、密码、指纹、面部识别等。这些方式需要在接口调用时进行验证。
-
权限检查:在接口调用之前,检查用户是否有访问特定资源或执行特定操作的权限。如果用户没有权限,应返回错误信息。
-
访问控制:根据用户的访问权限,对API调用进行访问控制。例如,只有用户拥有特定权限才能访问某些资源。
-
错误处理:在接口调用时,需要处理各种可能出现的错误,如网络错误、数据错误等。这些错误需要在接口调用返回后进行处理。
-
日志记录:在接口调用前后,需要记录详细的日志信息,以便于后期的分析和排查问题。
以上就是API接口鉴权设计的主要内容,具体的实现方式会根据实际的业务需求和技术栈来决定。
-
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
