已经开发好了一套 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/u