在“测试用户权限”这里,执行一下 SELECT * FROM $token; 这个 $token 里包含的就是当前用户的令牌里的主体数据,也就是在签发令牌的时候,放在令牌 payload 里的东西。
因为发送这个请求的时候(查看Timeline),在请求的头部里包含了一个 Authorization 头部,它的值是 Bearer 空格,然后是用户的令牌。SurrealDB 可以从 Authorization 这个头部里提取用户的令牌,验证它的有效性,获取到令牌的主体数据,也就是刚才我们看到的那些东西。
DB 是数据库,NS 是命名空间,SC 是作用域,iss 是令牌的签发者。ID 是用户的 ID,SurrealDB 会根据这个用户的 ID 找出用户数据。这些数据会放在 $auth 这个变量里。
权限
要查看 $auth 变量里的值,我们需要先定义一个 TABLE 权限,DEFINE TABLE user PERMISSIONS FOR select WHERE id = $auth.id。FOR create, update, delete NONE;
测试
在 “测试用户权限” 这里,执行 SELECT * FROM $auth; 返回的结果是 $auth 变量里的东西,它其实就是当前用户相关的数据,也就是 user 数据表里的一条特定的数据记录。
$scope
再试一下 SELECT * FROM $scope; 得到结果是当前用户登录到的作用域,这里就是 authenticated。
$session
下面再查看一下 $session 这个变量,SELECT * FROM $session; 这里会显示更详细的关于当前用户的相关信息,比如用户的 ip 地址,作用域,用户的 id,还有 token 的主体数据。