你能分清楚 Authentication 和 Authorization 吗?
它们的意思是这样的:
Authentication 认证
Authorization 授权
认证
认证的目的是让人顺利登入系统。
在 Laravel 中,使用 make:auth Artisan 命令,就能有一个认证系统了:登录、注册和找回密码。
如果一个人没有登录,就想访问登录用户才能访问的地址(比如 /dashboard),理论上就会报 401 Unauthorized 错误。
授权
授权跟用户有关,所以单词里有一个 Author。
那么就是说,只有登入系统才是用户,可作为用户的你,能做什么,就需要授权了。
Laravel 在 5.1 版本中引入了 Gate 和 Policy 的概念,就是为了能定义授权、然后给用户使用上授权。
举一个授权的例子:文章置顶。以 Laravel China 为例,不是每一个用户都有文章置顶权限的。
如果用户没有文章置顶权限,但机缘巧合访问到了文章置顶 URL 地址,理论上就会报 403 Forbidden 错误。
本作品采用《CC 协议》,转载必须注明作者和本文链接
本帖由 Summer
于 8年前 加精
关于 LearnKu
言简意赅
@Summer ;)
本来还懂的,看到这些报错有些懵逼了。
这里我比较关注语义。
为什么未
授权 (Authorization)要报的是403 Forbidden而不是401 Unauthorized认证 (Authentication)要报的是401 Unauthorized而不是403 Forbidden401 Unauthorized表示操作的当事人需要登录,403 Forbidden表示用户没有操作权限,需要授权。这两个语义很明确了。你懵逼的地方,可能是:对于某写些操作,如果出错,是考虑给
401还是403好呢?这种情况是有的,比如某一账号被「禁用」了,用户登录失败时,你可以给401也可以给403,因为这在语义上都说得通。我文中说的是普遍情况。希望对你有帮助 :)
@zhangbao 不是,我是纠结相同词根的单词没有一一对应啊哈哈 :smile:
Authorization没有对应到Unauthorized@limxx 这不重要。分清楚 Authentication 和 Authorization 的意思就 OK 了。
简洁明了~