权限验证
一般分两步,
- 确认用户是他声称的身份
- 对具体操作确认那个身份有权限执行
第一步,一般会在middleware 中统一进行,会和登陆耦合在一起
具体是用户首先通过用户名密码证明自己的身份,然后获得token 一类的存储在cookie 里的东西,然后用户后面访问时把这个东西放在请求中
这里会有一个问题,比如用户刚开始是某个组的成员,但是之后被踢出组,
有两个方法解决这个问题:
-
强制用户退出登录状态重新登录(后端删除缓存中的session)
-
每个请求都重新检查下是否还是小组成员
第二步,分布在具体的业务代码中
比如创建更新删除某个东西的权限
以前没有意识到这个问题,是因为在游戏开发中,玩家对于自己的数据是有完整权限的(没有做过工会类的功能),并不需要每次做check,即使做check,也只是检查消费金币前金币数量是否足够,并不需要分组权限一类的功能