认证
认证方式有两种。一种是使用用户名和密码进行认证,这需要使用DEFINE USER
语句定义的用户名和密码;另一种是使用DEFINE ACCESS
语句定义的自定义认证。这里我们将前者称为“用户认证”,后者称为“访问认证”。
.signin()
实例 方法
使用用户认证或访问认证登录SurrealDB。
signin(auth: Auth, options?: ClientRpcOptions): Promise<Jwt>;
参数
auth
用户认证或访问认证所需的信息。每种认证类型所需的参数如下:
认证类型 | 参数 |
---|---|
根用户 | { user: string, pass: string } |
命名空间用户 | { user: string, pass: string, ns: string } |
数据库用户 | { user: string, pass: string, ns: string, db: string } |
访问 | { ac: string, ns: string, db: string, [param: string]: unknown } |
访问认证通常需要根据定义的访问权限(ac
)添加额外的参数。
options
PRC请求的选项。
返回值
返回一个以Jwt
解析的Promise
对象。
示例
以下示例使用根用户登录SurrealDB:
import { Surreal } from "@tai-kun/surrealdb";
const db = new Surreal();await db.connect("ws://localhost:8000");
const jwt = await db.signin({ user: "root", pass: "passw0rd",});
console.log(jwt.issuedAt); // 例如 1722749786console.log(jwt.expiresAt); // 例如 1722753386console.log(jwt.namespace); // undefinedconsole.log(jwt.database); // undefinedconsole.log(jwt.access); // undefinedconsole.log(jwt.user); // 'root'
console.log(jwt.raw); // 'eyJ0eXAiOiJKV1QiLCJhb ... 'console.log(JSON.stringify(jwt)); // '"[REDACTED]"'
await db.close();
以下示例使用命名空间用户登录SurrealDB:
import { Surreal } from "@tai-kun/surrealdb";
const db = new Surreal();await db.connect("ws://localhost:8000");
const jwt = await db.signin({ ns: "my_namespace", user: "ns_user", pass: "passw0rd",});
console.log(jwt.namespace); // 'my_namespace'console.log(jwt.database); // undefinedconsole.log(jwt.access); // undefinedconsole.log(jwt.user); // 'ns_user'
await db.close();
以下示例使用数据库用户登录SurrealDB:
import { Surreal } from "@tai-kun/surrealdb";
const db = new Surreal();await db.connect("ws://localhost:8000");
const jwt = await db.signin({ ns: "my_namespace", db: "my_database", user: "db_user", pass: "passw0rd",});
console.log(jwt.namespace); // 'my_namespace'console.log(jwt.database); // 'my_database'console.log(jwt.access); // undefinedconsole.log(jwt.user); // 'db_user'
await db.close();
以下示例使用记录访问登录SurrealDB。.user
将设置记录 ID:
import { Surreal } from "@tai-kun/surrealdb";
const db = new Surreal();await db.connect("ws://localhost:8000");
const jwt = await db.signin({ ns: "my_namespace", db: "my_database", ac: "account", // ...parmeters});
console.log(jwt.namespace); // 'my_namespace'console.log(jwt.database); // 'my_database'console.log(jwt.access); // 'account'console.log(jwt.user); // 例如 'user:⟨tai-kun⟩'
await db.close();
.signup()
实例 方法
使用访问认证注册SurrealDB。
signup(auth: RecordAccessAuth, options?: ClientRpcOptions): Promise<Jwt>;
参数
auth
访问认证所需的信息。
options
PRC请求的选项。
返回值
返回一个以Jwt
解析的Promise
对象。
示例
import { Surreal } from "@tai-kun/surrealdb";
const db = new Surreal();await db.connect("ws://localhost:8000");
const jwt = await db.signup({ ns: "my_namespace", db: "my_database", ac: "account", // ...parmeters});
console.log(jwt.namespace); // 'my_namespace'console.log(jwt.database); // 'my_database'console.log(jwt.access); // 'account'console.log(jwt.user); // 例如 'user:⟨tai-kun⟩'
await db.close();
.authenticate()
实例 方法
使用JWT认证当前连接。
authenticate(token: string | Jwt, options?: ClientRpcOptions): Promise<void>
参数
token
要认证的JWT。
options
RPC请求的选项。
返回值
返回一个以undefined
解析的Promise
对象。
.invalidate()
实例 方法
使当前连接的认证失效。
invalidate(options?: ClientRpcOptions): Promise<void>
参数
options
RPC请求的选项。
返回值
返回一个以undefined
解析的Promise
对象。