返回知识库

数据与服务 · 账号与安全

鉴权Auth

先确认「你是谁」(authentication),再确认「你能不能碰这份数据」(authorization);未登录与无权是两种拒绝,允许时只返回当前用户范围的数据。

自己试一次:未登录、没权限、允许

打开「我的收藏」。切换身份与权限,再点「访问私有收藏」。重点看:拒绝文案有没有把「请登录」和「没权限」说成同一句,以及允许时有没有越界返回别人的数据。

场景:打开「我的收藏」。切换访客/用户、勾选权限,再点唯一主按钮「访问私有收藏」。观察拒绝原因有没有把「未登录」和「没权限」说成同一句。

身份访客
权限无读收藏权限
决策尚未检查

未登录,无需登出。先点「访问私有收藏」看怎么拦。

还没检查。点「访问私有收藏」看系统怎么判。

未操作:当前是访客、未授权。下一步:点「访问私有收藏」预测系统怎么拦——身份未确认应先要求登录。对照:先猜结果再点,看你的预期是否一致。

知识点:authentication 与 authorization 的分工

面板里刚操作过的两步,对应两个常被混为一谈的词。

  1. authentication · 确认你是谁

    用密码 / OTP / 生物特征等「因素」证明你是某个用户(例如用户 #42)。通过后把身份交给 session 或 token 带着走。访客没做过这一步,所以「你是谁」未知。

  2. authorization · 确认你能做什么

    已经知道你是用户 #42,再判断「#42 能不能读这份数据」。读自己的收藏、改设置、看别人的数据,各自单独放行;登录不等于全能。

  3. 两个拒绝不要糊成一句

    未登录 → 引导去登录并带回调;已登录无权 → 说明权限边界并给下一步。允许时只返回当前用户范围内的数据,不靠前端藏按钮代替服务端过滤。

什么时候该拦,什么时候别误伤

鉴权保护私有数据与写操作;公开浏览不该被登录墙误伤。

适合严格鉴权

「我的收藏」、个人设置、改删操作,以及任何会暴露他人数据的接口。

别整页一刀切

公开教程列表、落地页可以匿名看;需要登录时只拦私有入口,并说清原因。

同一件事:正例与反例

目标都是打开「我的收藏」。差异只在:两种拒绝有没有分开说,以及允许时有没有越界返回别人的数据。

正例边界清楚

访客访问 →「请先登录,登录后回到这里」。已登录但无权 →「你没有读收藏权限」,并提示申请或回公开页。允许时只返回自己的两条收藏。

身份失败与权限失败分流;允许范围不越界。
反例糊成一句 / 越界

一律弹「无法访问」;或前端藏了按钮,接口仍把别人的收藏一并返回;登出后旧页面还能继续刷出私有列表。

用户分不清下一步;数据边界被绕过。应在服务端重检并立刻失效。

快速自测

已登录但没有读收藏权限时,最合适的做法是?

继续查证

术语的技术定义和行为以这些一手或权威资料为准。

下一步学

和本知识点经常一起出现的概念。