安全
授权(authorization)· authz
/ aw-ther-i-ZAY-shun /
授权(authorization)决定的是:在系统已经知道你是谁之后,你「被允许做什么」。你登录了——没问题——但你能删掉这个文件吗?能看别人的工资吗?能打开管理后台吗?授权就是为每一个这种问题把关的那道关卡。
它总是发生在身份验证(authentication)之后。系统先确认你的身份(authn),再检查你的权限(authz)。知道你是谁,并不能说明你能碰什么——一个登录的访客和一个登录的管理员同样都「通过了验证」,但「被授予的权限」天差地别。
当你撞上一堵过不去的墙,那通常就是授权失败:服务器很清楚你是谁,只是不让你做这件事。在网络上,它常常表现为一个 403 Forbidden(禁止访问)。
if (user.role !== "admin") {
return res.status(403).send("Forbidden");
}
// authenticated, but not authorized for this授权检查:我们知道你是谁,只是你没权限进这里。
401 Unauthorized 其实是说「我们不知道你是谁」(属于身份验证问题)——真正代表授权说「不行」的是 403 Forbidden。这是网络上一个一直没改过来的命名错位。
又称
另见