权限要落到具体对象和动作
假设编辑甲可以修改自己的草稿,编辑乙负责另一组文章。两人都通过身份认证,但权限规则仍要决定谁能读、改、发布或删除哪一篇,不能只检查有没有账号。
相同身份在不同资源上的权限也可能不同,时间、所属团队和工作状态等还可能参与判断。因此“是编辑”只是规则中的一个条件,不必然等于所有文章的完全控制权。
登录成功之后,还要检查操作权限
- 01身份认证
确认当前是谁
- 02授权判断
谁对哪个对象可以做什么
教学角色配置,不代表所有软件的统一权限规则。
同一份文档,可以允许看却不允许改
假设一个项目把说明文档分享给三个人:小林是阅读者,只能看;小周是编辑者,能修改文字;负责人还可以决定把文档分享给谁。三个人都已经登录,身份认证都通过了,允许做的事情却不一样。
如果小林点了删除,系统应检查他对这份文档是否有删除权限,而不是仅因“已经登录”就放行。权限还可能随对象变化:他能编辑自己的文档,不代表能改别人的文档。授权要回答的是“谁,对哪个对象,可以做什么”,不是给账户贴一个永远通用的能或不能标签。图中的权限表只是一个假设方案,不代表每款软件的角色名称和权限都相同。
看得见文件,也未必能修改
同一个共享文件,可以让一些人只阅读、一些人补充内容,另一些人负责发布。权限不只是“能不能进入”,还需要区分不同操作。
如果编辑离开团队,过去授予的修改权限也需要调整;仅仅不再给他发链接,不等于已经撤回已有权限。
少给必要之外的权限
最小权限原则强调只提供完成职责所需的能力,职责变化时也要调整或撤销。权限体系应能解释为何允许和拒绝,而不是不断增加难以追踪的特殊放行。
公开内容也可以允许匿名访问,所以授权不总是要求先登录。关键是规则明确且一致执行:公开阅读、个人修改和管理操作应该分别判断,不能把一种允许扩展成所有允许。